php正则失效-最大回溯(pcre.backtrack_limit)/递归限制

当一个PHP正则表达式在本地工作但在服务器上失效时,可能是由于`pcre.backtrack_limit`或`pcre.recursion_limit`设置导致的问题。通过设置`ini_set("pcre.backtrack_limit", 1000000);`可以解决因回溯限制引发的PREG_BACKTRACK_LIMIT_ERROR。正则表达式的非贪婪模式可能导致过多回溯,影响性能。在处理大量文本时,应谨慎设计正则并考虑使用字符串处理方法。" 99675665,8702244,HBase Region故障修复步骤,"['HBase故障排除', 'Region管理', '数据库修复', '大数据', '分布式存储']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

昨天,同事在处理一个正则采集程序,发现了一个怪现象:在本地正则规则随便写都可以匹配到,可是上传到服务器后发现正则怎么写都匹配不到。自己调整了半天没有效果,放弃?那就…………,不甘心……,吃过晚饭后,打开电脑随便乱狂博客,还是google了一下,有关正则的规则,找来找去都在谈怎么写正则表达式等。最后静下心来分析了一下。

我和同事的电脑装的都是wamp,php版本都是5.3.x,服务器php版本是5.2.x,难道是这个问题,抱着怀疑的心情,打开了手册文本处理-pcre函数-preg_match_all,好家伙原来它上面有一个函数preg_last_error,打开看了看,那就用他试下我的代码,结果返回错误是   PREG_BACKTRACK_LIMIT_ERROR ,原来是这个环境变量问题,于是在我代码的开头加入ini_set("pcre.backtrack_limit",1000000);结果正常抓取。回头再看了下手册,发现下面的介绍:


最后又上网查了一些资料,其中有一个博主写的挺细的:下面转一些相关内容,解释一下:

在PHP的pcre扩展中, 提供了俩个设置项.


1 pcre.backtrack_limit //最大回溯数
2 pcre.recursion_limit //最大嵌套数

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值