张文保的博客
张文保 · Paul Zhang

Engineering the Future
功不唐捐,玉汝于成

ECSHOP提示Deprecated: preg_replace()报错的解决方法

在PHP5.5环境下运行的ECSHOP会提示

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in.......

这个错误。出现这个报错的原因是preg_replace()函数中用到的修饰符 /e 在 PHP5.5中已经被弃用了。如果你的PHP版本恰好是PHP5.5,那你的ECSHOP肯定会显示上面的错误提示。

preg_replace()错误的解决办法:

从那段错误提示信息中可以知道需要使用preg_replace_callback来代替preg_replace,使用编辑器(如:notepad++或editplus)打开文件 includes/cls_template.php ,找到

return preg_replace("/{([^\}\{\n]*)}/e", "\$this->select('\\1');", $source);

替换为

return preg_replace_callback("/{([^\}\{\n]*)}/", function($r) { return $this->select($r[1]); }, $source);

问题解决。

如果ECSHOP中其它页面也报类似的 preg_replace错误,也可用上面的通用方法解决。

TAG标签
ECSHOP PHP

相关文章
本文标题:《ECSHOP提示Deprecated: preg_replace()报错的解决方法》
网址:https://zhangwenbao.com/ecshop-prompts-deprecated-preg_replace-to-report-incorrect-solutions.html
作者:张文保
发布时间:2017-03-12
许可协议:CC BY-NC-SA 4.0
发表新评论
SSL安全认证