
Ecshop怎样处理Deprecated: preg_replace()出错
近期把一个ecshop程序做的网站迁移到一台php5.5版本号的网络服务器上,因为以前的网站模版做了改动,兼容问题php7,因此挑选应用低版本号的php网络服务器,但是从php5.3.28转到php5.5g還是碰到了难题,出現许多的Deprecated: preg_replace()不正确,如何办?因为自身不做开发设计,但做seo時间還是较为久,这一点相对性来讲還是打不倒我,百度搜索便是最好的教师,你所碰到的绝大多数难题百度搜索上别的网民早已得出了回答,因此要是你用心产找一般都能寻找。
针对报名参加了seo学习培训的学生,你学习培训的目地便是要把网站的重要词seo到百度搜索检索結果,因此和百度搜索相处是务必的,那麼大家就需要非常好的运用百度搜索,了解百度搜索,进而在应用的全过程中小结百度搜索的一些排行规律性,把这种规律性作为大家seo的一个輔助项。费话很少说,我在网站寻找许多条回答,有的仅有一两根有用,有的果断也不有用,这应当在于那时候公布者所应用的网络服务器php版本号与我应用的有差别的缘故吧,总而言之可以把自身碰到难题处理的方式共享出去,这种都应当变成大家的教师。
下边我将ecshop2.7.3对于php5.5版本号出現的不正确处理方式共享出去,以出示给碰到我一样不正确的seo工作人员处理碰到的难题。
Deprecated: preg_replace() 这类的出错数最多,要改动的文档相对路径:
假如你的PHP版本号正好是PHP5.5.X,那么你的ECSHOP毫无疑问便会报相近下边那样的不正确:
Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in......
处理方法:
1. Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in \includes\cls_template.php on line 300
原来內容:
return preg_replace( /{([^\}\{]*)}/e , \$this- select( \\1 , $source);
改动后內容:
return preg_replace_callback( /{([^\}\{]*)}/ , function($r) { return $this- select($r[1]); }, $source);
2. Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in \includes\cls_template.php on line 491
原来內容:
$out = ?php . $k = . preg_replace( /(\ \\$[^,] )/e , stripslashes(trim( \\1 , \ , var_export($t, true)) .
改动后內容:
$out = ?php . $k = . preg_replace_callback( /(\ \\$[^,] )/ , function($match){return stripslashes(trim($match[1], \ }, var_export($t, true)) .
3. Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in \includes\cls_template.php on line 550
原来內容:
$val = preg_replace( /\[([^\[\]]*)\]/eis , . .str_replace( $ , \$ , \\1 ) , $val);
改动后內容:
$val = preg_replace_callback( /\[([^\[\]]*)\]/is ,function ($matches) {return . .str_replace( $ , \$ ,$matches[1]);},$val);
4. Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in \includes\cls_template.php on line 1074
原来內容:
$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);
5. Strict Standards: Only variables should be passed by reference in ...\upload\includes\lib_main.php on line 1329
原来內容:
$ext = end(explode( . , $tmp));
改动后內容:
$extsub = explode( . , $tmp);
$tmp = end($extsub);
$tmp = basename($tmp, .$ext
最终,将不正确改动后,提交到网络服务器.随后进到后台管理,清除缓存文件,更新网页页面就可以。
提议改动前,做文档备份数据,防止止改动不正确造成网页无法访问~