【发布时间】:2015-09-07 23:28:27
【问题描述】:
这里有人可以帮助我吗? 模式是
/\[url=?\]([a-z0-9:\.\\\/-\s]*?)\[\/url\]/isS
错误:
preg_replace():编译失败:偏移 26 处字符类中的无效范围
【问题讨论】:
-
第 26 个字符是什么?
标签: php preg-replace
这里有人可以帮助我吗? 模式是
/\[url=?\]([a-z0-9:\.\\\/-\s]*?)\[\/url\]/isS
错误:
preg_replace():编译失败:偏移 26 处字符类中的无效范围
【问题讨论】:
标签: php preg-replace
【讨论】:
这应该在 PHP (PCRE) 中工作:
/\[url=?\]([a-z0-9:\.\\\/\-\s]*?)\[\/url\]/is
首先在你的字符类语句[] 中转义-,否则你会得到一个错误的范围错误。
第二个/S 修饰符对于您的模式可能不是一个好主意。阅读:
当一个模式要被多次使用时,值得花费 更多时间分析它以加快 匹配。如果设置了这个修饰符,那么这个额外的分析是 执行。目前,研究一个模式只对 没有单一固定起始点的非锚定模式 字符。
测试你的正则表达式regex101.com 相当不错。
【讨论】: