2017-03-18 4 views
-1

私は次のコードを持っている:操作は失敗し、このエラーが表示され、このため/シンボルのするpreg_match機能「/」

$URI = "controller/method/parms"; 
    $pattern = "a-z0-9_-/"; 
    echo preg_match("/^[". $pattern ."]+$/i", $URI); 

を:
Warning: preg_match(): Unknown modifier ']'。そのシンボルを削除すると、すべて正常に動作します。

+1

エスケープは 'スラッシュ$パターン= "-Z0-9 _ \/- "; splash58 @' – splash58

+0

:あなたは正しいです、ありがとうございます。問題はシンボルの順番であり、パターンの最後にシンボルを置くことは想定されていませんでした。 –

+0

本当に、私に投票する理由はありません。 –

答えて

2
はスラッシュをエスケープし、文字クラスの最後にダッシュを移動

$pattern = "a-z0-9_\/-"; 
preg_match("/^[". $pattern ."]+$/i", $URI); 

注:それはダッシュをエスケープするのでpreg_quoteは、このケースでは動作しません、私は理由を知りません。あなたはまた、別の区切り文字を使用でき

$pattern = "a-z0-9_/-"; 
preg_match("~^[". $pattern ."]+$~i", $URI); 
+0

残念ながら、どちらの場合でもエラーメッセージが表示されます。 –

+0

@LionKing:申し訳ありませんが、2番目のパラメータがありません:) – Toto

+0

'preg_quote()'が '\ w'を含む' $パターン 'を '\ w'でエスケープし、一致しません。 – nickb