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生成自己的LOG文件
Oct 09 PHP
如何分别全角和半角以避免乱码
Oct 09 PHP
PHP实现用户认证及管理完全源码
Mar 11 PHP
linux下使用ThinkPHP需要注意大小写导致的问题
Aug 02 PHP
PHP Cookie的使用教程详解
Jun 03 PHP
PHP的error_reporting错误级别变量对照表
Jul 08 PHP
PHP支付系统设计与典型案例分享
Aug 02 PHP
yii 2.0中表单小部件的使用方法示例
May 23 PHP
快速解决PHP调用Word组件DCOM权限的问题
Dec 27 PHP
php workerman定时任务的实现代码
Dec 23 PHP
PHP使用PDO操作sqlite数据库应用案例
Mar 07 PHP
php 使用mpdf实现指定字段配置字体样式的方法
Jul 29 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
了解咖啡雨林联盟认证 什么是雨林认证 雨林认证是什么意思
2021/03/05 新手入门
Apache环境下PHP利用HTTP缓存协议原理解析及应用分析
2010/02/16 PHP
php 输出双引号"与单引号'的方法
2010/05/09 PHP
php获取POST数据的三种方法实例详解
2016/12/20 PHP
关于Laravel Route重定向的一个注意点
2017/01/16 PHP
laravel orm 关联条件查询代码
2019/10/21 PHP
jquery animate 动画效果使用说明
2009/11/04 Javascript
锋利的jQuery 要点归纳(三) jQuery中的事件和动画(上:事件篇)
2010/03/24 Javascript
JavaScript初学者应注意的七个细节小结
2012/01/30 Javascript
jQuery.extend 函数详解
2012/02/03 Javascript
javascript实现数字+字母验证码的简单实例
2014/02/10 Javascript
js禁止页面刷新与后退的方法
2015/06/08 Javascript
深入理解JavaScript编程中的同步与异步机制
2015/06/24 Javascript
javascript的BOM
2016/05/03 Javascript
Ionic2系列之使用DeepLinker实现指定页面URL
2016/11/21 Javascript
vue2.0使用Sortable.js实现的拖拽功能示例
2017/02/21 Javascript
jQuery图片缩放插件smartZoom使用实例详解
2017/08/25 jQuery
Bootstrap popover 实现鼠标移入移除显示隐藏功能方法
2018/01/24 Javascript
在小程序中集成redux/immutable/thunk第三方库的方法
2018/08/12 Javascript
vue 源码解析之虚拟Dom-render
2019/08/26 Javascript
Vue CLI4 Vue.config.js标准配置(最全注释)
2020/06/05 Javascript
JS实现简单移动端鼠标拖拽
2020/07/23 Javascript
[01:20:47]DOTA2-DPC中国联赛 正赛 Ehome vs Magma BO3 第一场 1月19日
2021/03/11 DOTA
wxpython 最小化到托盘与欢迎图片的实现方法
2014/06/09 Python
Python列表list内建函数用法实例分析【insert、remove、index、pop等】
2017/07/24 Python
深入学习Python中的上下文管理器与else块
2017/08/27 Python
Python 使用类写装饰器的小技巧
2018/09/30 Python
Python图像处理之图像的读取、显示与保存操作【测试可用】
2019/01/04 Python
python实现socket+threading处理多连接的方法
2019/07/23 Python
Python利用多线程同步锁实现多窗口订票系统(推荐)
2019/12/22 Python
Tensorflow中批量读取数据的案列分析及TFRecord文件的打包与读取
2020/06/30 Python
python中判断数字是否为质数的实例讲解
2020/12/06 Python
Python 2.6.6升级到Python2.7.15的详细步骤
2020/12/14 Python
房屋买卖协议样本
2014/11/16 职场文书
毕业设计致谢词
2015/05/14 职场文书
Mysql忘记密码解决方法
2022/02/12 MySQL