【问题标题】:preg_match(): Compilation failedpreg_match(): 编译失败
【发布时间】:2015-07-21 08:28:31
【问题描述】:

我尝试匹配这个表达式:

$reg = '/' . str_replace('%','[A-Za-z0-9_-]*', str_replace('.', '\.', $exception)) . '/i';

但是得到这个错误:

2015 年 7 月 21 日 22:15:30 UTC] PHP 警告:preg_match():编译 失败:在偏移量 12 处丢失)

【问题讨论】:

  • 也许 , 应该是 .
  • 没有看到 preg_match() 调用
  • 第一个 str_replace 没有关闭。之后你有,而不是点“。”。毕竟你已经关闭了最后一次 str_replace 两次
  • 你的 preg_match 是什么?它应该像preg_match($reg, $string);
  • 我认为您需要处理更多特殊的正则表达式字符,这里是take a look。如果你有()[+ 符号,难怪你有问题。

标签: php regex preg-match


【解决方案1】:

我认为你需要补充:

$exception = preg_replace('/[()\[\]+$^*?\\\\{]/', '\\\$0', $exception);

这将处理其余的正则表达式元字符。

IDEONE demo

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-15
    • 2011-07-22
    相关资源
    最近更新 更多