代码之家  ›  专栏  ›  技术社区  ›  Simon

在…中未知的修饰符“/”…?它是什么?

  •  0
  • Simon  · 技术社区  · 16 年前

    当我写下面的文章时,我得到了这样的警告,它与任何东西都不匹配,但我确信,那 $row_search['content'] $value ...

    preg_match_all("/[^\s]*".preg_quote($value)."[^\s]*/iu", $row_search['content'], $final_matched);
    
    WARNING:preg_match_all() [function.preg-match-all]: Unknown modifier '/' in C:\xampp\htdocs\finance\search\search.php on line 82
    

    4 回复  |  直到 16 年前
        1
  •  6
  •   Felix Kling    16 年前

    我想 $value / ,而不是通过 preg_quote :

    . \ + * ? [ ^ ] $ ( ) { } = ! < > | : -

    将使用的分隔符传递给函数:

    preg_match_all("/[^\s]*".preg_quote($value, '/')."[^\s]*/iu", $row_search['content'], $final_matched);
    //                                        ---^
    

        2
  •  4
  •   Colin Hebert    16 年前

    你应该改变主意 preg_quote($value) preg_quote($value, "/")

    在你的例子中,如果 $value 包含“(content/other)”它将作为“(content/other)”转义,并且在regex中 /[^\s]*\(content/other\)[^\s]*/iu /[^\s]*\(content\/other\)[^\s]*/iu

        3
  •  2
  •   BoltClock    16 年前

    / 不是PCRE元字符,所以尽管在正则表达式中使用它作为分隔符, preg_quote() 不会逃避因为它不会 知道

    preg_match_all("/[^\s]*".preg_quote($value, '/')."[^\s]*/iu", $row_search['content'], $final_matched);
    
        4
  •  0
  •   Gumbo    16 年前

    指定 / 使用时作为分隔符 preg_quote :

    preg_match_all("~/[^\s]*~".preg_quote($value, '/')."[^\s]*/iu", $row_search['content'], $final_matched);
    

    否则a 价值 $value 不会逃脱的。