【问题标题】:Issue with preg_match_all : Compilation failed unmatched parenthesespreg_match_all 的问题:编译失败的括号不匹配
【发布时间】:2019-01-21 13:02:11
【问题描述】:

我正面临以下警告

preg_match_all():编译失败:偏移处的括号不匹配 4

使用时preg_match_all

下面是代码

preg_match_all('/' . $word . '/i', $text, $matches);

【问题讨论】:

  • $word的内容是什么
  • 我尝试使用的上述预匹配是从句子示例 $word ="ban"; 中找到一个单词$text = "我可以禁止你";
  • 但您的示例正在运行 (ideone.com/8xbXaf)。你能显示$text$word抛出错误的确切值吗?
  • @SebastianBrosch $word 从服务器匹配,它包含特殊字符。 preg_quote 解决了这个问题。

标签: php server-side preg-match-all regex-negation


【解决方案1】:

看起来$word 上有一些特殊字符用于正则表达式语法。您的$word 包含以下字符之一:. \ + * ? [ ^ ] $ ( ) { } = ! < > | : - #。您必须使用 preg_quote 引用这些字符:

preg_match_all('/'.preg_quote($word).'/i', $text, $matches);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-06
    • 2012-05-10
    • 1970-01-01
    • 1970-01-01
    • 2013-08-02
    • 1970-01-01
    相关资源
    最近更新 更多