我有以下代码:
$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);