我有这个代码与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";
}
答案 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';
编辑:我的斜线错了。现在已经修好了。