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

时间:2014-09-15 15:39:35

标签: php url detect

我有这个代码与url匹配而不是做某事,它的工作正常,但是当url有一些页面后面的代码/board/users/somename/replies/page/2/时,代码将无效。我怎样才能检测到这部分网址/board/users/somename/replies/而忽略了其余部分?谢谢你的帮助。

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

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

echo "right";

}else{

echo "wrong";

}

3 个答案:

答案 0 :(得分:0)

只需尝试正则表达式

if preg_match('/'.$myurl.'/', $pageUrl) {}

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

如果您想要将页面/中的网址排除在其中,请尝试通过正则表达式进行否定预测

if preg_match('/(?!'.$myurl.'page\/)'.$myurl.'/', $pageUrl) {}

否定前瞻确保myurl / page /不在URL中,然后您只需匹配您的网址。

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

上的php手册

答案 1 :(得分:0)

您还可以使用PHP stristr函数来匹配字符串的开头。 (不区分大小写)试试这个:

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

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

我希望它有所帮助!

答案 2 :(得分:0)

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

if ( strpos(strtolower($pageURL), strtolower($myurl)) === 0 )

您还必须确保前导和尾部斜杠匹配,因此我建议您修改代码的前两行,如下所示:

$pageURL = '/' . trim($_SERVER['REQUEST_URI'], '/');
$myurl   = '/board/users/somename/replies';
编辑:我的斜线错了。现在已经修好了。