preg_match优化 - 正则表达式太慢了

时间:2014-08-13 22:03:34

标签: php regex optimization preg-replace

(.[^\n]*?)\[code](.*?)\[\/code](.[^\n]*?)(*SKIP)(*F)|(.[^\n]*?)\[php](.*?)\[\/php](.[^\n]*?)(*SKIP)(*F)|some_rules_here

上面的模式使得函数运行得太慢。

有了它: http://regex101.com/r/qP4tT5/1 页面加载时间超过3秒。 Regex调试器表示执行正则表达式共需要5153个步骤。

没有它: http://regex101.com/r/fG4tW0/1 页面仅在0.3秒内加载 正则表达式调试器表示执行正则表达式只需要4个步骤。

为什么我必须使用它: 因为如果表情符号的快捷方式位于[code][php]标记内,则不应该是HTML。

是否有另一种方法可以更快地完成同样的事情?

1 个答案:

答案 0 :(得分:1)

您可以稍微简化一下这个正则表达式。

~\[(code|php)][^[]*\[/\1](*SKIP)(*F)|:\(~i

enter image description here

Live Demo

相关问题