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迭代器的内部执行过程详解
Nov 12 PHP
Yii框架form表单用法实例
Dec 04 PHP
php对象在内存中的存在形式分析
Feb 03 PHP
PHP判断是否连接上网络的方法
Jul 01 PHP
php+html5实现无刷新图片上传教程
Jan 22 PHP
php 二维数组时间排序实现代码
Nov 19 PHP
PHP简单实现二维数组的矩阵转置操作示例
Nov 24 PHP
PHP7新特性之抽象语法树(AST)带来的变化详解
Jul 17 PHP
作为PHP程序员你要知道的另外一种日志
Jul 30 PHP
PHP生成zip压缩包的常用方法示例
Aug 22 PHP
PHP ob缓存以及ob函数原理实例解析
Nov 13 PHP
基于PHP实现生成随机水印图片
Dec 09 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中转义mysql语句的实现代码
2011/06/24 PHP
php实现图片缩放功能类
2013/12/18 PHP
PHP中的reflection反射机制测试例子
2014/08/05 PHP
PHP中的Trait 特性及作用
2016/04/03 PHP
PHP使用 Pear 进行安装和卸载包的方法详解
2019/07/08 PHP
laravel excel 上传文件保存到本地服务器功能
2019/11/14 PHP
基于jquery的blockui插件显示弹出层
2011/04/14 Javascript
JS连接SQL数据库与ACCESS数据库的方法实例
2013/11/21 Javascript
jQuery自定义事件的简单实现代码
2014/01/27 Javascript
JavaScript取得键盘按下方向键是哪个的方法
2015/08/04 Javascript
js css实现垂直方向自适应的三角提示菜单
2016/06/26 Javascript
Javascript 基础---Ajax入门必看
2016/07/06 Javascript
Bootstrap组件系列之福利篇几款好用的组件(推荐二)
2016/07/12 Javascript
Laravel中常见的错误与解决方法小结
2016/08/30 Javascript
jQuery和JavaScript节点插入元素的方法对比
2016/11/18 Javascript
JavaScript上传文件时不用刷新页面方法总结(推荐)
2017/08/15 Javascript
JavaScript如何对图片进行黑白化
2018/04/10 Javascript
VSCode中如何利用d.ts文件进行js智能提示
2018/04/13 Javascript
通过一次报错详细谈谈Point事件
2018/05/17 Javascript
vue.js实现的幻灯片功能示例
2019/01/18 Javascript
基于javascript的拖拽类封装详解
2019/04/19 Javascript
Vue自定义多选组件使用详解
2020/09/08 Javascript
python2.x实现人民币转大写人民币
2018/06/20 Python
Python获取Redis所有Key以及内容的方法
2019/02/19 Python
Python autoescape标签用法解析
2020/01/17 Python
Python3爬虫mitmproxy的安装步骤
2020/07/29 Python
css3类选择器之结合元素选择器和多类选择器用法
2017/03/09 HTML / CSS
意大利文具和办公产品在线商店:Y-Office
2020/02/27 全球购物
社区八一活动方案
2014/02/03 职场文书
教育技术职业规划范文
2014/03/04 职场文书
开工仪式策划方案
2014/05/23 职场文书
公司演讲稿开场白
2014/08/25 职场文书
酒店爱岗敬业演讲稿
2014/09/02 职场文书
关于运动会的广播稿
2014/09/22 职场文书
oracle通过存储过程上传list保存功能
2021/05/12 Oracle
零基础学java之带参数以及返回值的方法
2022/04/10 Java/Android