我有以下代碼:該功能的preg_match不接受符號「/」
$URI = "controller/method/parms";
$pattern = "a-z0-9_-/";
echo preg_match("/^[". $pattern ."]+$/i", $URI);
因爲這個/
符號,操作將失敗,出現此錯誤:
Warning: preg_match(): Unknown modifier ']'
。但如果我刪除該符號,一切都會正常工作。
我有以下代碼:該功能的preg_match不接受符號「/」
$URI = "controller/method/parms";
$pattern = "a-z0-9_-/";
echo preg_match("/^[". $pattern ."]+$/i", $URI);
因爲這個/
符號,操作將失敗,出現此錯誤:
Warning: preg_match(): Unknown modifier ']'
。但如果我刪除該符號,一切都會正常工作。
逃離斜線和在字符類的末尾移動破折號:
$pattern = "a-z0-9_\/-";
preg_match("/^[". $pattern ."]+$/i", $URI);
注:因爲它避開了破折號preg_quote不會在這種情況下工作,我不知道爲什麼。
你也可以使用其他分隔符:
$pattern = "a-z0-9_/-";
preg_match("~^[". $pattern ."]+$~i", $URI);
逃生削減'$模式= 「A-Z0-9 _ \/- 」' – splash58
@ splash58:謝謝你,你是對的。問題是按照符號的順序,它不應該把符號放在模式的末尾。 –
真的,我沒有看到任何理由給我投票。 –