preg_match匹配过多字符长度的限制的思路分析
今天在编写采集程序的过程中,遇到了preg_match函数无法匹配某些页面的困扰。我反复检查正则表达式,没有发现任何明显的问题。于是,我开始怀疑是不是preg_match函数对匹配的字符串长度有所限制。
在官方文档中并没有找到相关的说明。为了验证我的猜想,我将要匹配的字串不断缩短,直到缩短到原来的五分之一时,匹配居然成功了。这使我更加坚信了我的猜想。于是,我开始在搜索引擎中寻找解决方案。
终于,在搜索中找到了答案:在phpi文件中加入一行代码(可以放在任何位置,我选择放在了最前面)——pcre.backtrack_limit=-1。重新使用preg_match函数进行测试,现在即使是包含大约1300多行、上万个字符的字符串也能够成功匹配了。
在我的项目中,使用preg_match函数进行目标内容的提取时,始终存在一些问题。我反复测试代码,却始终找不到问题的根源。后来,我发现“pcre.backtrack_limit”的值默认只设置了100000。为了解决这个问题,我使用了ini_set函数将其设置为一个较大的值('pcre.backtrack_limit', 999999999)。需要注意的是,这个参数仅在PHP 5.2.0版本之后可用。
还有一个参数叫做pcre.recursion_limit,它是PCRE的递归限制。如果这个参数设置了一个很大的值,可能会消耗所有进程的可用堆栈,最终导致PHP崩溃。我们可以通过修改配置来限制其值:ini_set('pcre.recursion_limit', 99999)。
在实际项目应用中,除了设置递归限制外,还应该对内存进行限定设置。通过调用ini_set('memory_limit', '64M')来确保程序的稳定运行。这样,我们的程序就能更加稳健地运行,避免不必要的错误和崩溃。
网站模板
- Dreamweaver网页中怎么插入命名锚记链接-
- userint32.exe - userint32是什么进程
- 天猫宝余额怎么查询?往天猫宝里充了钱却找不
- 后缀名为.csh是什么文件?
- Win10通过执行批处理命令实现定时关机
- 怎样用 cdr X7 绘制图形阴影-CorelDRAW X7 绘制图形阴
- 电脑主机噪音大怎么办如何解决
- Win10开机后无限重启不能进入系统的解决方法
- cmd怎么进入d盘文件夹?
- Ai简单绘制可爱的雪人图标
- 网页免费打电话不花一分钱拨打你想要拨打的电
- html中用href 实现点击链接弹出文件下载对话框
- 微软开始推送Win10系统累积性更新KB3081438以及获取
- 基于浏览器的WEB应用的Flex开发操作系统
- 索尼Compact配置曝光 主打女性手机
- AI怎么制作混合特殊效果的艺术字-