码迷,mamicode.com
首页 > 其他好文 > 详细

将preg_replace()改写为preg_replace_callback()

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

标签:回调   reg   net   cal   文件   需要   cat   原型   完全   

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()

标签:回调   reg   net   cal   文件   需要   cat   原型   完全   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!