2017-03-06 7 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 ANYWHEREと一致します。あなたは完全な文字列surveillanceがディレクトリの値として使用されていることを確認するために試してみたい場合は、スラッシュで(/を)それをラップすることができます:

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

私はsymfonyのことは知らないが、そうMawcelは正しいかもしれません彼/彼女のポストに。

さらに、surveillanceがサーバー上の有効な/既存のディレクトリとして使用されていることを確認したい場合は、ディレクトリが存在するかどうかを確認する他の機能を調べる必要があります。これがあなたのサーバー上にない場合は、部分文字列の場所を調べるより洗練された正規表現パターンを調べるとよいでしょう。

関連する問題