Php 匹配URL链接并忽略后面的页面

Php 匹配URL链接并忽略后面的页面,php,url,detect,Php,Url,Detect,我有这段代码,它将匹配url,然后做一些事情,它工作得很好,但是当url后面有一些页面时,比如/board/users/somename/repress/page/2/代码将无法工作。我怎样才能只检测url/board/users/somename/replies/的这一部分,而忽略后面的其余部分?谢谢你的帮助 $pageURL = $_SERVER['REQUEST_URI']; $myurl = '/board/users/somename/replies/'; if (strtolo

我有这段代码,它将匹配url,然后做一些事情,它工作得很好,但是当url后面有一些页面时,比如/board/users/somename/repress/page/2/代码将无法工作。我怎样才能只检测url/board/users/somename/replies/的这一部分,而忽略后面的其余部分?谢谢你的帮助

$pageURL = $_SERVER['REQUEST_URI'];
$myurl   = '/board/users/somename/replies/';

if (strtolower($pageURL) == strtolower($myurl) ) {

echo "right";

}else{

echo "wrong";

}

只需尝试一个正则表达式

如果preg_匹配“/”.$myurl./”,$pageUrl{}

这将匹配任何包含$myurl的url。如果正则表达式匹配,preg_match返回1,如果不匹配,则返回0

如果要排除包含page/的URL,请尝试通过regex进行反向前瞻

如果preg_匹配“/?!”$myurl.'page\/'.$myurl./',$pageUrl{}

反向前瞻确保myurl/page/不在URL中,然后您只需匹配您的URL即可

编辑:有关preg_match的更多信息,请查看位于

的php手册,您还可以使用php函数匹配字符串的长度。不区分大小写

试试这个:

$pageURL = $_SERVER['REQUEST_URI'];
$myurl   = '/board/users/somename/replies/';

if (stristr($pageURL, $myurl) !== FALSE) {
    echo "right";
} else {
    echo "wrong";
}

我希望有帮助

只需匹配字符串的开头,如下所示:

if ( strpos(strtolower($pageURL), strtolower($myurl)) === 0 )
$pageURL = '/' . trim($_SERVER['REQUEST_URI'], '/');
$myurl   = '/board/users/somename/replies';
您还必须确保前后斜杠匹配,因此我建议您修改代码的前两行,如下所示:

if ( strpos(strtolower($pageURL), strtolower($myurl)) === 0 )
$pageURL = '/' . trim($_SERVER['REQUEST_URI'], '/');
$myurl   = '/board/users/somename/replies';

编辑:我把斜线弄错了。现在已修复。

您需要使用常规表达式。谢谢,这很好,很好地确保了尾部斜杠。