PHP5.2下preg_replace函数的问题


Posted in PHP onMay 08, 2015

preg_replace 使用的超过了php5.2默认允许的字节,也就是pcre.backtrack_limit和pcre.recursion_limit的大小的问题。

Discuz!6.0.0正式版程序发布以来,大家都热火朝天的升级中,但是部分插件在6.0下出现了问题
比如http://www.discuz.net/viewthread.php?tid=559133这个银行插件

在php为5.2.0及以上的环境下安装以后会出现白屏的问题

从Discuz!用户的角度考虑,我们需要去协助插件作者解决这个问题

下面说下我的解决过程,希望能给大家一些建议吧

第一:此插件在5.5的情况下可以正常运行,但是6.0下就白屏了

Discuz!6.0为了增加模板缓存文件的可读性,增加了缓存文件的缩进,而确实修改过部分templates.func.php的模板处理部分,
莫非是这个原因?开始我初步确定是这里的问题,因为用5.5的部分代码替换修改过的代码,就表现正常,但是很郁闷的没有找到原因

第二步:怀疑是bank.htm这个模板书写格式的问题,于是我很郁闷的开始分析模板,说实话,模板大了分析起来真的很头疼。结果显然又没有找到原因。比较郁闷的说

第二步:然后发现将此模板拆分以后,就正常执行了,这时候我初步怀疑是不是正则匹配的bug在大数据量的时候出现了错误,于是我就上bugs.php.net开始搜索了http://bugs.php.net/search.php?c … ace&x=3&y=5在这里找啊找啊找,于是终于找到了这里http://bugs.php.net/bug.php?id=39405,突然间发现居然是5.2配置的问题,在调整大pcre.backtrack_limit和pcre.recursion_limit之后问题解决

据说将pcre.backtrack_limit=-1 in php.ini
就是无限制

之所以写这么详细就是想一起分享下我解决问题的思路:)

PHP 相关文章推荐
通过对服务器端特性的配置加强php的安全
Oct 09 PHP
PHP OPCode缓存 APC详细介绍
Oct 12 PHP
PHP中大于2038年时间戳的问题处理方案
Mar 03 PHP
php基本函数汇总
Jul 09 PHP
PHP实现抓取迅雷VIP账号的方法
Jul 30 PHP
从性能方面考虑PHP下载远程文件的3种方法
Dec 29 PHP
php实现图片上传并利用ImageMagick生成缩略图
Mar 14 PHP
PHP实现的限制IP投票程序IP来源分析
May 04 PHP
PHP的mysqli_set_charset()函数讲解
Jan 23 PHP
Laravel如何自定义command命令浅析
Mar 23 PHP
PHP开发的文字水印,缩略图,图片水印实现类与用法示例
Apr 12 PHP
php数组和链表的区别总结
Sep 20 PHP
PHP中is_dir()函数使用指南
May 08 #PHP
php中file_exists函数使用详解
May 08 #PHP
PHP时间和日期函数详解
May 08 #PHP
PHP数组和explode函数示例总结
May 08 #PHP
php函数重载的替代方法--伪重载详解
May 08 #PHP
PHP文件读取功能的应用实例
May 08 #PHP
php实现的IMEI限制的短信验证码发送类
May 05 #PHP
You might like
php结合飞信 免费天气预报短信
2009/05/07 PHP
php Xdebug的安装与使用详解
2013/06/20 PHP
ThinkPHP中公共函数路径和配置项路径的映射分析
2014/11/22 PHP
PHP PDO fetch 模式各种参数的输出结果一览
2015/01/07 PHP
php使用explode()函数将字符串拆分成数组的方法
2015/02/17 PHP
PHP访问数据库集群的方法小结
2016/03/14 PHP
PHP实现的观察者模式实例
2017/06/21 PHP
PHP 文件锁与进程锁的使用示例
2017/08/07 PHP
Thinkphp5 微信公众号token验证不成功的原因及解决方法
2017/11/12 PHP
PHP实现APP微信支付的实例讲解
2018/02/10 PHP
Jquery的each里用return true或false代替break或continue
2014/05/21 Javascript
2014 年最热门的21款JavaScript框架推荐
2014/12/25 Javascript
Bootstrap Modal对话框如何在关闭时触发事件
2016/12/02 Javascript
node操作mysql数据库实例详解
2017/03/17 Javascript
剖析Angular Component的源码示例
2018/03/23 Javascript
微信小程序之判断页面滚动方向的示例代码
2018/08/30 Javascript
JS温故而知新之变量提升和时间死区
2019/01/27 Javascript
JS Html转义和反转义(html编码和解码)的实现与使用方法总结
2020/03/10 Javascript
从零学python系列之新版本导入httplib模块报ImportError解决方案
2014/05/23 Python
基于Python的接口测试框架实例
2016/11/04 Python
flask + pymysql操作Mysql数据库的实例
2017/11/13 Python
Python数据分析中Groupby用法之通过字典或Series进行分组的实例
2017/12/08 Python
python使用参数对嵌套字典进行取值的方法
2019/04/26 Python
ML神器:sklearn的快速使用及入门
2019/07/11 Python
Form表单及django的form表单的补充
2019/07/25 Python
8种常用的Python工具
2020/08/05 Python
HTML5 Canvas标签使用收录
2009/07/07 HTML / CSS
HTML5移动端开发中的Viewport标签及相关CSS用法解析
2016/04/15 HTML / CSS
美国购买体育赛事门票网站:TicketCity
2019/03/06 全球购物
工作人员思想汇报
2014/01/09 职场文书
迎接领导欢迎词
2014/01/11 职场文书
甜点店创业计划书
2014/01/27 职场文书
大学军训感言400字
2014/03/11 职场文书
我为党旗添光彩演讲稿
2014/09/10 职场文书
《迟到》教学反思
2016/02/24 职场文书
最新动漫情报:2022年7月新番定档超过30部, OVERLORD骨王第四季也在其中噢
2022/05/04 日漫