ECSHOP完美解决Deprecated: preg_replace()报错的问题_php技巧

随着PHP5.5 的普及,ECSHOP系统又爆出了新的错误。PHP发展到PHP5.5版本以后,有了很多细微的变化。而ECSHOP官方更新又太慢,发现这些问题后也不及时升级,导致用户安装使用过程中错误百出。说了半天,这个新错误到底是什么呢,它的完整错误提示信息是这样的:

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

注意:不是所有人的ECSHOP都会报这个错误,只有使用PHP5.5环境的ECSHOP才会报这个错误。

下面ecshop开发中心(www.68ecshop.com)教程先来说一下错误产生的原因:

1)、错误原因:

preg_replace() 函数中用到的修饰符 /e 在 PHP5.5.x 中已经被弃用了。

如果你的PHP版本恰好是PHP5.5.X,那你的ECSHOP肯定就会报类似下面这样的错误:

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

2)、解决办法:

其实从刚才的错误提示信息中我们也能看出一二,它提示我们使用 preg_replace_callback 来代替 preg_replace。

所以解决方法如下:

使用记事本或其他PHP编辑软件(如: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);

问题解决。

3)、如果你的ECSHOP中其他文件也报类似的 preg_replace错误,请参照上面方法解决之,解决思路和解决方法是一样的。

时间: 2024-10-09 03:16:19

ECSHOP完美解决Deprecated: preg_replace()报错的问题_php技巧的相关文章

php使用ftp远程上传文件类(完美解决主从文件同步问题的方法)_php技巧

php使用ftp实现文件上传代码片段: <?php /** * ftp上传文件类 */ class Ftp { /** * 测试服务器 * * @var array */ private $testServer = array( 'host' => 'ip', 'port' => 21, 'user' => 'userName', 'pwd' => 'password' ); /** * 打开并登录服务器 * * @param string $flag 服务器标识test *

apache+php完美解决301重定向的两种方法_php技巧

幸好有301重定向能有效解决这样的问题.正如月光博客这篇文章中说的, 301重定向可促进搜索引擎优化效果 从搜索引擎优化角度出发,301重定向是网址重定向最为可行的一种办法.当网站的域名发生变更后,搜索引擎只对新网址进行索引,同时又会把旧地址下原有的外部链接如数转移到新地址下,从而不会让网站的排名因为网址变更而收到丝毫影响.同样,在使用301永久性重定向命令让多个域名指向网站主域时,亦不会对网站的排名产生任何负面影响. 关于301重定向的更多内容,大家不妨Google一下.本文只介绍实现方法啦!

探寻PHP脚本不报错的原因_php技巧

那么如果PHP脚本不报语法错,会是什么原因呢: 1. 一般的集成环境,默认会开启错误报告; 但在linux系统中,使用软件包安装的就不一定了, 此时可以查看PHP配置文件,打开错误报告 => 复制代码 代码如下: display_errors = On /* PHP配置文件路径:/uer/local/php/etc/php.ini  */ 注:PHP脚本中动态设置php.ini配置文件的方法 => 复制代码 代码如下: ini_set('display_errors', 'On'); /* 显

解决安卓Java报错的问题

问题描述 解决安卓Java报错的问题 解决方案 解决 java.util.prefs.BackingStoreException 报错问题解决安卓添加Theme.NoTitleBar报错问题解决Eclipse中Java工程间循环引用而报错的问题 解决方案二: 你用的是Eclipse吧?快改用Android Studio吧 解决方案三: 你用的是Eclipse吧?快改用Android Studio吧

oracle 求大神解决谢谢!!!! select报错怎么改 急急急

问题描述 oracle 求大神解决谢谢!!!! select报错怎么改 急急急 select mv.*,(select r.currency,trunc(r.rcv_date,'MM') as rcv_date,sum(decode(r.transaction_type, 'RECEIVE', 1, -1) * r.QUANTITY) from epms_erp_rcvqty_info r where r.LINE_LOCATION_ID = '33733' and r.rcv_date >=

ecshop适应在PHP7的修改方法解决报错的实现_php实例

ecshop这个系统,到目前也没见怎么推出新版本,如果是新项目,不太建议使用它.不过,因为我一直以来都在使用中,所以不得不更改让其适应PHP新版本.现在PHP 7已经出发行版了,所以更改来继续使用吧.具体的更改有以下方面: (1)将mysql扩展的使用替换掉,改为使用mysqli或pdo: 从php5.5开始,mysql扩展将废弃了. 具体更改的文件在于includes/cls_mysql.php.这是个不小的工程,文件代码太长-- if (!defined('DITAN_ECS')) { di

解决sweetalert 无故报错 elem.className.replace Uncaught TypeError: Cannot read property &amp;#39;className&amp;#39; of null

今天碰到这么一个问题,在使用sweetalert的时候时有时无会报错  elem.className.replace Uncaught TypeError: Cannot read property 'className' of null  很简单,debug源码,发现elem在有时候会为空,为空的时候抛出异常,修改如下代码即可解决该问题  效果:  

解决win10系统报错“插头已从插孔中拔出”问题

1.声音管理器中进行设置了,我们可以在win10中打开声音管理器,具体不同系统会有所不同. 2.在任务栏我们点击"喇叭图"然后就会打开"音频管理器(驱动不同,音频管理器不同)"了,如下所示. 3.然后在进入到的"音频管理器"我们点击像"文件夹"的图标, 4.然后我们在弹出界面选中"禁用前面板插孔检测",第二个就不要勾选了,如下所示. 5.我们点击确定后,不会再弹出这个插头已从插孔中拔出一直弹出提示了. 好了

php5.4传引用时报错问题分析_php技巧

本文实例分析了php5.4传引用时报错问题.分享给大家供大家参考,具体如下: php5.3系列版本以及以前版本,传引用没有什么问题,升级到php5.4以后,传引用的地方,全报错 Fatal error: Call-time pass-by-reference has been removed in F:\work\wamp\www\test\test.php on line 6.看一下下面的例子. 例1,递归传引用,在php 5.3及以及版本,测试结果 <?php function test($