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 操作excel文件的方法小结
Dec 31 PHP
php输出表格的实现代码(修正版)
Dec 29 PHP
php FLEA中二叉树数组的遍历输出
Sep 26 PHP
php Hex RGB颜色值互换的使用
May 10 PHP
(PHP实现)只使用++运算实现加法,减法,乘法,除法
Jun 27 PHP
PHP伪静态Rewrite设置之APACHE篇
Jul 30 PHP
php生成短域名函数
Mar 23 PHP
详细解读PHP的Yii框架中登陆功能的实现
Aug 21 PHP
PhpStorm terminal无法输入命令的解决方法
Oct 09 PHP
php注册审核重点解析(数据访问)
May 23 PHP
php类自动装载、链式操作、魔术方法实现代码
Jul 23 PHP
PHP实现获取毫秒时间戳的方法【使用microtime()函数】
Mar 01 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
Linux下进行MYSQL编程时插入中文乱码的解决方案
2007/03/15 PHP
php相当简单的分页类
2008/10/02 PHP
谈谈关于php的优点与缺点
2013/04/11 PHP
MongoDB在PHP中的常用操作小结
2014/02/20 PHP
tp5.1 框架数据库高级查询技巧实例总结
2020/05/25 PHP
很酷的javascript loading效果代码
2008/06/18 Javascript
javascript scrollTop正解使用方法
2013/11/14 Javascript
js类型转换与引用类型详解(Boolean_Number_String)
2014/03/07 Javascript
JavaScript中的原型链prototype介绍
2014/12/30 Javascript
使用jQueryMobile实现滑动翻页效果的方法
2015/02/04 Javascript
js中用cssText设置css样式的简单方法
2016/09/19 Javascript
浅谈JS函数定义方式的区别
2016/10/30 Javascript
js实现一个可以兼容PC端和移动端的div拖动效果实例
2016/12/09 Javascript
JS常用倒计时代码实例总结
2017/02/07 Javascript
vue webpack打包后图片路径错误的完美解决方法
2018/12/07 Javascript
基于Node.js搭建hexo博客过程详解
2019/06/25 Javascript
使用Typescript开发微信小程序的步骤详解
2021/01/12 Javascript
[07:55]2014DOTA2 TI正赛第三日 VG上演推进荣耀DKEG告别
2014/07/21 DOTA
Python中文件操作简明介绍
2015/04/13 Python
使用apidocJs快速生成在线文档的实例讲解
2018/02/07 Python
对python字典过滤条件的实例详解
2019/01/22 Python
python 定时器,轮询定时器的实例
2019/02/20 Python
python多线程案例之多任务copy文件完整实例
2019/10/29 Python
Django CBV模型源码运行流程详解
2020/08/17 Python
matplotlib事件处理基础(事件绑定、事件属性)
2021/02/03 Python
Sneaker Studio波兰:购买运动鞋
2018/04/28 全球购物
查找廉价航班和发现新目的地:Kiwi.com
2019/02/25 全球购物
运动会通讯稿50字
2014/01/30 职场文书
技术总监管理职责范本
2014/03/06 职场文书
道路运输企业安全生产责任书
2014/07/28 职场文书
高三毕业评语
2014/12/31 职场文书
设备技术员岗位职责
2015/04/11 职场文书
女性健康知识讲座通知
2015/04/23 职场文书
广播体操比赛主持词
2015/06/29 职场文书
《葡萄沟》教学反思
2016/02/23 职场文书
Python捕获、播放和保存摄像头视频并提高视频清晰度和对比度
2022/04/14 Python