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 字符截取 解决中文的截取问题,不用mb系列
Sep 29 PHP
PHP 常用数组内部函数(Array Functions)介绍
Jun 05 PHP
PHP array_multisort() 函数的深入解析
Jun 20 PHP
解决php使用异步调用获取数据时出现(错误c00ce56e导致此项操作无法完成)
Jul 03 PHP
php生成随机密码自定义函数代码(简单快速)
May 10 PHP
PHP下通过QRCode类库创建中间带网站LOGO的二维码
Jul 12 PHP
php防止伪造数据从地址栏URL提交的方法
Aug 24 PHP
PHP正则表达式之捕获组与非捕获组
Nov 06 PHP
PHP常用排序算法实例小结【基本排序,冒泡排序,快速排序,插入排序】
Feb 07 PHP
Yii2框架类自动加载机制实例分析
May 02 PHP
PHP7实现和CryptoJS的AES加密方式互通示例【AES-128-ECB加密】
Jun 08 PHP
tp5框架基于ajax实现异步删除图片的方法示例
Feb 10 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
table标签的结构与合并单元格的实现方法
2013/07/24 PHP
php实现自定义中奖项数和概率的抽奖函数示例
2017/05/26 PHP
Laravel基础-关于引入公共文件的两种方式
2019/10/18 PHP
js中各浏览器中鼠标按键值的差异
2011/04/07 Javascript
JS中Iframe之间传值及子页面与父页面应用
2013/03/11 Javascript
页面js遇到乱码问题的解决方法是和无法转码的情况
2014/04/30 Javascript
node.js中的console.timeEnd方法使用说明
2014/12/09 Javascript
javascript制作2048游戏
2015/03/30 Javascript
详解JavaScript中setSeconds()方法的使用
2015/06/11 Javascript
Js遍历键值对形式对象或Map形式的方法
2016/08/08 Javascript
JavaScript如何实现图片懒加载(lazyload) 提高用户体验(增强版)
2016/11/30 Javascript
jQuery Validation Engine验证控件调用外部函数验证的方法
2017/01/18 Javascript
在js代码拼接dom对象到页面上去的模板总结(必看)
2017/02/14 Javascript
大白话讲解JavaScript的Promise
2017/04/06 Javascript
vue2.0实现分页组件的实例代码
2017/06/22 Javascript
基于vue 动态加载图片src的解决方法
2018/02/05 Javascript
详解JS实现系统登录页的登录和验证
2019/04/29 Javascript
用原生JS实现爱奇艺首页导航栏代码实例
2019/09/19 Javascript
python调用java的Webservice示例
2014/03/10 Python
Flask的图形化管理界面搭建框架Flask-Admin的使用教程
2016/06/13 Python
Python实现PS图像调整黑白效果示例
2018/01/25 Python
python实现黑客字幕雨效果
2018/06/21 Python
python return逻辑判断表达式实现解析
2019/12/02 Python
Python编程快速上手——PDF文件操作案例分析
2020/02/28 Python
CSS3中background-clip和background-origin的区别示例介绍
2014/03/10 HTML / CSS
纯CSS3打造动感漂亮时尚的扇形菜单
2014/03/18 HTML / CSS
寻找完美的房车租赁:RVShare
2019/02/23 全球购物
复古服装:RetroStage
2019/05/10 全球购物
凌阳科技股份有限公司C++程序员面试题笔试题
2014/11/20 面试题
党的生日演讲稿
2014/09/10 职场文书
2014年宣传工作总结
2014/11/18 职场文书
2014年精神文明工作总结
2014/12/23 职场文书
业务内勤岗位职责
2015/04/13 职场文书
运动会班级口号霸气押韵
2015/12/24 职场文书
教你在 Java 中实现 Dijkstra 最短路算法的方法
2022/04/08 Java/Android
Python中npy和mat文件的保存与读取
2022/04/24 Python