使用PHP检查URL的最后一部分

3

我正在使用Zend框架。 我想要检查链接的最后一部分。我的链接是http://localhost/sports/soccer/page_id/776543233242
我的URL的最后一部分必须有12或11位数字,并且我希望该部分的第一位数字以8开头(如果是11位)并以7开头(如果是12位)。

public function detailAction ()
{

    $uri = Zend_Controller_Front::getInstance()->getRequest()->getRequestUri();
     if (substr(substr($uri, -12),1)=='7'){
        echo "successfull";
     }
     else if (substr(substr ($uri , -11),8)=='0'){
        echo "succ";
     }
     else {
        echo "failed";
     }
}

所以你只想获取:776543233242 并验证它吗? - Rizier123
实际上我想要与其他字符串进行比较,但在这一步骤中,是的,只需验证此子字符串。@Rizier123 - Farzan Najipour
我希望我的答案能够帮到你,而且正是你想要的。 - Rizier123
5个回答

4
这对你来说应该可行:

这对你来说应该可行:

<?php

       $url = "http://localhost/sports/soccer/page_id/776543233242";
       $part = basename($url);

       if(strlen($part) == 11 && $part[0] == 8 || strlen($part) == 12 && $part[0] == 7)
            echo "yes";
        else
            echo "no";

?>

输出:

yes

1
使用php中的basename()函数获取您的url的最后一部分,然后计算字符串的数量。使用strlen检查单词数。使用以下代码:
    public function detailAction ()
{

    $url = Zend_Controller_Front::getInstance()->getRequest()->getRequestUri();
           $url = "http://localhost/sports/soccer/page_id/776543233242";
           $basename = basename($url);

           if(strlen($basename) == 11 && $basename[0] == 8 || strlen($basename) == 12 && $basename[0] == 7){
                echo "succ";
    }
            else{
                echo "failed";
    }
    }

希望这能帮到你。

为什么那个答案看起来和我的答案如此相似?! - Rizier123
哦...差不多就像你的回答,我没有注意到,顺便给你的回答点个赞,再见。 - Utkarsh Dixit

0

请查看parse_url。然后您可以获取路径并在/上进行拆分。

function isValidUrl($url)
{
    $elements = parse_url($url);

    if ($elements === false) {
        return false;
    }

    $lastItem = end(explode("/", $elements['path']);
    return ((strlen($lastItem) == 12 && $lastItem[0] == '7') || (strlen($lastItem) == 11 && $lastItem[0] == '8'));
}

0
如果您只想从您的URL中获取数字,我建议您使用正则表达式。在这种情况下:
$url="http://localhost/sports/soccer/page_id/776543233242";
$regex = "/[0-9]+/";
preg_match_all($regex, $url, $out); //$out will be an array storing the mathcing strings, preg_match_all creates this variable to us
var_dump($out);

这段代码输出 $out。它的显示效果如下:

array(1) {
[0]=>
    array(1) {
    [0]=>
        string(12) "776543233242"
    }
}

希望它能对你有所帮助。


0

显然,所需的URL部分对应于page_id参数。

使用Zend Framework,您可以像这样获取此参数的值:

$page_id = $this->getRequest()->getParam('page_id');

if(strlen($page_id) == 11 && $page_id[0] == 8 
|| strlen($page_id) == 12 && $page_id[0] == 7)
    echo "yes";
else
    echo "no";

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接