dqwh1201 2017-03-18 12:59
浏览 59
已采纳

preg_match函数不接受符号“/”

I have the following code:

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

Because of this / symbol, the operation fails and appears this error:
Warning: preg_match(): Unknown modifier ']'. but if I remove that symbol, everything will work correctly.

  • 写回答

1条回答 默认 最新

  • duanqing3026 2017-03-18 13:00
    关注

    Escape the slash and move the dash at the end of the character class:

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

    Note: preg_quote doesn't work in this case because it escapes the dash, I don't know why.

    You could also use another delimiter:

    $pattern = "a-z0-9_/-";
    preg_match("~^[". $pattern ."]+$~i", $URI);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?