首页 > 其他 > 详细

将preg_replace()改写为preg_replace_callback()

时间:2017-04-22 22:17:37      阅读:187      评论:0      收藏:0      [点我收藏+]

PHP5.5之后,preg_replace()函数由于可能带来的安全问题而被抛弃使用,升级为preg_replace_callback()。在新版本下运行老版本的代码,会出现错误,如:

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in D:\xampp\htdocs\eccore\view\template.php on line 726

这时需要将函数进行改写。

打开错误提示中相应的文件,找到对应函数:

$val = preg_replace("/\[([^\[\]]*)\]/eis", "‘.‘.str_replace(‘$‘,‘\$‘,‘\\1‘)", $val);

改写为:

$val = preg_replace_callback("/\[([^\[\]]*)\]/is", function($matches){
            return ‘.‘.str_replace(‘$‘,‘\$‘,‘$matches[1]‘);
            }, $val);
$matches[1]代表捕获的第一个子组,$matches[0]则代表完全匹配的字符串。具体改写方法是,将原来的第二个参数变为回调函数,在函数中返回原来第二个参数相同的值。
这两个函数原型可参阅官方文档:http://php.net/manual/zh/function.preg-replace.php

 

将preg_replace()改写为preg_replace_callback()

原文:http://www.cnblogs.com/hubqin/p/6749401.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!