当前位置:  编程技术>其它

解决preg_match匹配过多字符长度的限制的思路分析

    来源: 互联网  发布时间:2014-10-17

    本文导语:  但是官方的文档里面没有说明这一点。 于是开始测试:将要匹配的字串不断缩短,直到缩为原来1/5的时候可以正常匹配了,所以更加确定了。 到google里一搜,终于找到了解决方案:在php.ini中加入(随便放到哪里,我是直接放...

但是官方的文档里面没有说明这一点。

于是开始测试:将要匹配的字串不断缩短,直到缩为原来1/5的时候可以正常匹配了,所以更加确定了。

到google里一搜,终于找到了解决方案:在php.ini中加入(随便放到哪里,我是直接放第一行的)

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.recursion_limit是PCRE的递归限制,这个项如果设很大的值,会消耗所有进程的可用堆栈,最后导致PHP崩溃。

也可以通过修改配置来限制:ini_set(‘pcre.recursion_limit', 99999);

实际项目应用中,最好也对内存进行限定设置:ini_set(‘memory_limit', '64M'); , 这样就比较稳妥妥嘎。

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • oracle 实际值超过数据库某个字段指定长度报错解决
  • Oracle Sql语句长度限制问题及解决
  • c语言输出字符串中最大对称子串长度的3种解决方案
  • 用Java Applet 进行Web编程时,如何限制输入域中可输入字符的长度!解决后马上给分!!!
  • secureCRT下Linux终端汉字乱码解决方法
  • VS2005解决方案管理器中不显示解决方案节点的解决办法
  • 修改配置真正解决php文件上传大小限制问题(nginx+php)
  • 有高手能破解RAR的密码吗,至今没有找到人能解决?(先只给10分意思意思,若解决,至少给解决的人500分!说话算话!)
  • 修改配置真正解决php文件上传大小限制问题(apache+php)
  • 解决 select 挡住div的解决方法
  • window.onload事件覆盖掉body onload事件(window.onload和html body onload事件冲突)解决办法
  • 奇怪,怎么“已解决”问题只有4页(10/17日之后的),以前的已解决问题到哪里看?
  • sharepoint 2010中item.Update()和item.SystemUpdate 修改数据版本问题解决
  • 解决!解决!求助如何安装多系统!
  • andriod中UIScrollView无法正常滚动的解决方法
  • 解决多级索引速度慢的问题可否像解决多级页表那样使用TLB?
  • 错误:将'const x'作为'x'的'this'实参时丢弃了类型限定问题解决
  • Liunx命令tar压缩出现如下错误该怎么解决?急需解决!感谢
  • vs2010下禁用vmware的方法以及解决vmware插件导致vs2010变慢的问题
  • 求数据库解决方案===求数据库解决方案
  • windows server2008上PowerBuilder程序系统错误解决方法
  • MYSQL安装时解决要输入current root password的解决方法
  • Linux/CentOS下的CST和UTC时间的区别以及不一致的解决方法
  • 解决oracle用户连接失败的解决方法
  • Linux下时钟同步问题:Clock skew detected原因分析及解决方法
  • 呵呵,前段时间Ubuntu服务器版的问题总算解决了,解决方法就是重新安装桌面版-_-!


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3