Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Symfony preg_匹配路线_Php_Regex_Symfony - Fatal编程技术网

Php Symfony preg_匹配路线

Php Symfony preg_匹配路线,php,regex,symfony,Php,Regex,Symfony,我需要预赛我的路线,我试着这样: if (preg_match('surveillance', $request->headers->get('referer'))){ var_dump("match"); } else { var_dump("dont match"); } 通过我的标题获得参考,我获得: http://.../surveillance/item/veille/h/55 如果我有“监视”,我希望返回“匹配”。在preg_match表达式中添加

我需要预赛我的路线,我试着这样:

if (preg_match('surveillance', $request->headers->get('referer'))){
     var_dump("match");
} else {
     var_dump("dont match");
}
通过我的标题获得参考,我获得:

http://.../surveillance/item/veille/h/55

如果我有“监视”,我希望返回“匹配”。

在preg_match表达式中添加分隔符

if (preg_match('/surveillance/', $request->headers->get('referer'))){
     var_dump("match");
} else {
     var_dump("dont match");
}

if (stristr($request->headers->get('referer'),'surveillance')){
      var_dump("match");
} else {
     var_dump("dont match");
}

这可能不是您要寻找的答案,但您可能不应该使用正则表达式解析referer,而应该使用单独的控制器操作和路由,或者只使用相同的路由/控制器,但使用路由参数


这就是它们的用途。

您的搜索字符串不是可变的,您也不关心它在标题字符串中的位置,因此regex不是适合您的最佳方法

只需像这样使用
strpos()

if (strpos($request->headers->get('referer'),'surveillance')!==false){
     var_dump("match");
} else {
     var_dump("dont match");
}
但是上面的内容将匹配头字符串中的任何位置。如果要尝试检查完整字符串
监视
是否用作目录值,可以将其用斜杠(
/
)括起来:

我不知道Symfony的情况,所以Mawcel可能就在他/她的帖子里

除了这些选项之外,如果您真的想确保
监视
被用作服务器上的有效/现有目录,那么您必须查看检查该目录是否存在的其他功能。如果这不在您的服务器上,那么您可能希望查看一个更精细的正则表达式模式,该模式检查子字符串的位置

if (strpos($request->headers->get('referer'),'/surveillance/')!==false){
     var_dump("match");
} else {
     var_dump("dont match");
}