小编mku*_*lon的帖子

PHP中的"正则表达式太大"错误

我正在研究一个相对复杂,非常大的正则表达式.它目前有41,127个字符,并且可能会增加一些,因为可能会添加其他案例.我开始在PHP中出现此错误:

preg_match_all():编译失败:正则表达式在偏移量41123处太大

有没有办法增加尺寸限制?其他地方建议的以下设置不起作用,因为这些适用于数据大小而不是正则表达式大小:

ini_set("pcre.backtrack_limit", "100000000");
ini_set("pcre.recursion_limit", "100000000");
Run Code Online (Sandbox Code Playgroud)

或者,有没有办法在正则表达式中定义可以在正则表达式中的不同位置重复的"子模式变量"?(我不使用谈论重复*或者+,甚至重复匹配的"1")?我实际上使用包含子模式的PHP变量,这些子模式在正则表达式中的几个地方重复,但这导致正则表达式在传递给PRCE函数之前的扩展.

这是一个复杂的正则表达式,不能使用此链接strpos建议的简单关键字搜索替换.

我宁愿避免将其拆分为子表达式|并尝试分别匹配子表达式,因为大小的减小将是适度的(顶级只有2或3 |),这会使进一步的开发复杂化.

php regex

9
推荐指数
2
解决办法
1万
查看次数

标签 统计

php ×1

regex ×1