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);

最新更新