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 相关文章推荐
swfupload 多文件上传实现代码
Aug 27 PHP
最新的php 文件上传模型,支持多文件上传
Aug 13 PHP
php开发过程中关于继承的使用方法分享
Jun 17 PHP
php循环语句 for()与foreach()用法区别介绍
Sep 05 PHP
PHP获取数组中某元素的位置及array_keys函数应用
Jan 29 PHP
Zend的MVC机制使用分析(一)
May 02 PHP
PHP中array_merge和array相加的区别分析
Jun 17 PHP
PHP连接access数据库
Mar 27 PHP
Laravel手动分页实现方法详解
Oct 09 PHP
详解php协程知识点
Sep 21 PHP
PHP PDOStatement::setFetchMode讲解
Feb 03 PHP
PHP实现chrome表单请求数据转换为接口使用的json数据
Mar 04 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生成的html meta和link标记在body标签里 顶部有个空行
2010/05/18 PHP
PHP数组操作汇总 php数组的使用技巧
2011/07/17 PHP
Yii CFileCache 获取不到值的原因分析
2017/02/08 PHP
Laravel框架数据库迁移操作实例详解
2020/04/06 PHP
PHP设计模式入门之状态模式原理与实现方法分析
2020/04/26 PHP
javascript prototype,executing,context,closure
2008/12/24 Javascript
Javascript的并行运算实现代码
2010/11/19 Javascript
利用javascript打开模态对话框(示例代码)
2014/01/11 Javascript
jQuery简单实现QQ空间点赞已经取消点赞
2015/04/02 Javascript
JavaScript转换二进制编码为ASCII码的方法
2015/04/16 Javascript
AngularJS实现表单验证功能
2017/01/09 Javascript
浅谈React碰到v-if
2018/11/04 Javascript
jQuery+vue.js实现的多选下拉列表功能示例
2019/01/15 jQuery
js实现弹出框的拖拽效果实例代码详解
2019/04/16 Javascript
vue动态子组件的两种实现方式
2019/09/01 Javascript
实例讲解JavaScript 计时事件
2020/07/04 Javascript
[02:19]2014DOTA2国际邀请赛 专访820少年们一起去追梦吧
2014/07/14 DOTA
python处理圆角图片、圆形图片的例子
2014/04/25 Python
深入浅出分析Python装饰器用法
2017/07/28 Python
django.db.utils.ProgrammingError: (1146, u“Table‘’ doesn’t exist”)问题的解决
2018/07/13 Python
CentOS 7下安装Python3.6 及遇到的问题小结
2018/11/08 Python
详解用python写一个抽奖程序
2019/05/10 Python
python 使用while写猜年龄小游戏过程解析
2019/10/07 Python
DJango的创建和使用详解(默认数据库sqlite3)
2019/11/18 Python
Python加密模块的hashlib,hmac模块使用解析
2020/01/02 Python
Python warning警告出现的原因及忽略方法
2020/01/31 Python
英国领先的在线高尔夫设备零售商:Golfgeardirect
2020/12/11 全球购物
将一个数的从第5位开始的7个数取出,其余位置0
2016/05/26 面试题
亿企通软件测试面试题
2012/04/10 面试题
英语自荐信范文
2013/12/11 职场文书
小学生操行评语
2014/04/22 职场文书
学生会干部自我鉴定2014
2014/09/18 职场文书
会计简历自我评价
2015/03/10 职场文书
2015年街道办事处工作总结
2015/05/22 职场文书
《鲁滨逊漂流记》之六读后感(4篇)
2019/09/29 职场文书
Python的三个重要函数详解
2022/01/18 Python