Symfony preg_match一条路线

时间:2017-03-06 08:54:09

标签: php regex symfony

我需要preg_match我的路线,我尝试这样:

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

随着我的标题得到引用我得到:

http://.../surveillance/item/veille/h/55
如果我有“监视”,我希望得到“匹配”。

3 个答案:

答案 0 :(得分:1)

为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");
}

答案 1 :(得分:0)

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

这就是他们的目的。

答案 2 :(得分:0)

您的搜索字符串不是可变的,并且您不关心它在标题字符串中的位置,因此正则表达式不适合您的情况。

只需使用# i assume there is a file by name `ia_servers` with variable IA_SRV_cs68_64="ds1 ds2 ds3 ds5 " import imp ia_servers =imp.load_source('ia_servers', 'path to `ia_servers` file') print ia_servers.IA_SRV_cs68_64 # this should print `ds1 ds2 ds3 ds5` ,就像这样:

strpos()

但是上面的内容会在标题字符串中匹配if (strpos($request->headers->get('referer'),'surveillance')!==false){ var_dump("match"); } else { var_dump("dont match"); } ANYWHERE。如果要尝试检查是否将完整字符串surveillance用作目录值,可以用斜杠(surveillance)包装它:

/

我不了解Symfony,所以Mawcel可能会在他/她的帖子中正确。

除了这些选项之外,如果您想确定if (strpos($request->headers->get('referer'),'/surveillance/')!==false){ var_dump("match"); } else { var_dump("dont match"); } 被用作服务器上的有效/现有目录,那么您必须查看检查目录是否存在的其他函数存在。如果您的服务器上没有这个,那么您可能需要查看更精确的正则表达式模式来检查子字符串位置。