ECSHOP如何解决DEPRECATED: PREG_REPLACE()报错

类似这样的报错:

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in D:\wyh\ecshop\includes\cls_template.php on line 300

1、错误原因:
preg_replace() 函数中用到的修饰符 /e 在 PHP5.5.x 中已经被弃用了。
如果你的PHP版本恰好是PHP5.5.X,那你的ECSHOP肯定就会报类似这样的错误。

2、解决办法:

一、将 cls_template.php的300行

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

换成:

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

二、将cls_template.php的493行

$out = "<?php \n" . ‘$k = ‘ . preg_replace("/(\‘\\$[^,]+)/e" , "stripslashes(trim(‘\\1‘,‘\‘‘));", var_export($t, true)) . ";\n";

换成:

$out = <?php \n" . ‘$k = ‘ . preg_replace_callback("/(\‘\\$[^,]+)/" , function($r) {return stripslashes(trim($r[1],‘\‘‘));}, var_export($t, true)) . ";\n";

三、将cls_template.php的552行

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

换成:

$val = preg_replace_callback("/\[([^\[\]]*)\]/", function($r) {return ‘.‘.str_replace(‘$‘,‘$‘,$r[1]);}, $val);

四、将cls_template.php的1069行

$pattern = ‘/<!--\s#BeginLibraryItem\s\"\/(.*?)\"\s-->.*?<!--\s#EndLibraryItem\s-->/se‘;
$replacement = "‘{include file=‘.strtolower(‘\\1‘). ‘}‘";
$source = preg_replace($pattern, $replacement, $source);

换成:

$pattern = ‘/<!--\s#BeginLibraryItem\s\"\/(.*?)\"\s-->.*?<!--\s#EndLibraryItem\s-->/s‘;
$source = preg_replace_callback($pattern, function($r){return ‘{include file=‘.strtolower($r[1]). ‘}‘;}, $source);
时间: 2024-08-07 17:00:50

ECSHOP如何解决DEPRECATED: PREG_REPLACE()报错的相关文章

解决mysqldump备份报错: Couldn&#39;t execute &#39;SHOW FIELDS FROM Unknown error 1356

服务器环境: [[email protected] mysql]# cat /etc/redhat-releaseCentOS Linux release 7.3.1611 (Core) [[email protected] mysql]# uname -aLinux localhost.localdomain 3.10.0-514.21.1.el7.x86_64 #1 SMP Thu May 25 17:04:51 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

解决JVM启动报错:Unrecognized VM option &#39;+HeapDumpOnOutOfMemeryError&#39;

今天再搞一些OutOfMemery的相关知识探索,我想在JVM遇到OOM错误的时候,能够打印出heap dump,以便事后用Eclipse Memory Analyzer Tool(MAT)等内存分析工具分析内存的占用情况.我使用了JDK1.6.0_37和JDK1.7.0_60版本进行试验,到网上找了下,知道-XX:+HeapDumpOnOutOfMemoryError可以让JVM在探测到内存OOM的时候打印dump.但是在JVM启动参数添加这个参数的时候,JVM启动失败: Unrecogniz

修改grub解决计算机启动报错:ERROR 17

修改grub解决计算机启动报错:ERROR 17 原本计算机有C,D,E,F,G.C盘windows系统盘,G盘安装了Centos.后来由于需要,就压缩卷的方式从D盘压缩出一个H盘.然后再次启动计算机的时候就遇到了错误:ERROR 17 原因: 就在于先安装windows后安装Linux这样的话,grub就由位于G盘的Centos引导,现在该分区之前又划分出一个新的逻辑分区,就导致磁盘系统符号向后移了一位,因此grub失败. 解决方案: 1,刻录一个Linux安装U盘,进入BIOS修改启动项,从

解决MySQL8.0报错:Unknown system variable &#39;validate_password_policy&#39;

一.问题描述 1.在安装MySQL8.0时,修改临时密码,因密码过于简单(如:123456),不符合MySQL密码规范,会触发一个报错信息: ERROR 1819 (HY000): Your password does not satisfy the current policy requirements. 二.遇到问题 1.解决办法调整MySQL密码验证规则,修改 policy 和 length 的值. 2.MySQL 5.7 进行如下设置,即可解决问题: mysql>  set global

解决Deprecated: preg_replace(): The /e modifier is deprecated, use

使用php5.5运行ecshop的时候出现如下错误Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in \ecshop\includes\cls_template.php on line 300 解决方法如下 打开ecshop的目录找到includes\cls_template.php 到第300行 把 return preg_replace("/{([^\}

解决Eclipse启动报错Failed to create the Java Virtual Machine

电脑:2G内存,WIN7 32位. 启动adt-bundle-windows-x86-20140702\eclipse\eclipse.exe时,报错[Failed to create the Java Virtual Machine].点确定后,Eclipse自动关闭 解决方法如下: 修改Eclipse目录下的配置文件[eclipse.iniadt-bundle-windows-x86-20140702\eclipse\eclipse.ini] 将下面两个值改为原来的0.5倍,然后保存,重新启

解决maven的报错

昨晚用Mars版本建maven工程,测试springboot,一路很顺畅,没有啥阻碍. 今天换了台机器,结果就不好用了,建完maven工程后,pom文件报错,该生成的代码结构也没有,更别提jar包了. 首先明确一点,该eclipse版本是自带maven,不需要额外配置, 查了一遍,发现新机器上的eclipse虽然是mars版,但是是32位的,到C:\Program Files (x86)\Java下一看,果然没有1.6以上版本的jdk, 于是安装一个32位的1.8 JDK,windows->pr

解决Linux MySQL报错ERROR 2002

在Linux安装MySQL有时候会出现[mysql]ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) 这样的错误,具体解决办法如下: [[email protected] ~]# rm -rf /var/lib/mysql/*[[email protected] ~]# rm /var/lock/subsys/mysqldrm: remove

解决Eclipse启动报错【Failed to create the Java Virtual Machine】

电脑:2G内存,WIN7 32位. 启动adt-bundle-windows-x86-20140702\eclipse\eclipse.exe时,报错[Failed to create the Java Virtual Machine].点确定后,Eclipse自动关闭 解决方法如下: 修改Eclipse目录下的配置文件[eclipse.iniadt-bundle-windows-x86-20140702\eclipse\eclipse.ini] 将下面两个值改为原来的0.5倍,然后保存,重新启