2017-03-06 142 views
0

我需要的preg_match我的路線,我嘗試這樣的:的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 

,我想獲得回報「匹配」如果我有「監視」。

回答

1

爲preg_match表達式添加分隔符。

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

OR

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

確實是分隔符,謝謝! :) – Ygg69

0

這可能不是你要找的,但不是用正則表達式解析引用者,你應該使用單獨的控制器動作和路線或者只是使用相同的答案路由/控制器,但使用路由參數。

這就是他們的目的。

0

你的搜索字符串是不可變的,你不關心它在頭字符串中的位置,所以正則表達式不是你的情況的最佳方法。

只需使用strpos()這樣的:

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

但上面的會頭字符串中的任何匹配surveillance。如果您想嘗試,以檢查完整字符串surveillance被用作一個目錄值,你可以在斜線把它包(/):

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

我不知道Symfony的,所以Mawcel可能是正確的在他/她的帖子上。

除了這些選項,如果你想確定surveillance被用作服務器上的有效/現有目錄,那麼你必須查看其他函數來檢查目錄是否存在。如果這不在您的服務器上,那麼您可能需要查看更精確的正則表達式模式來檢查子字符串的位置。