preg_replace()和preg_replace_callback
来源:互联网 发布:拼接控制器和矩阵区别 编辑:程序博客网 时间:2024/06/06 13:15
转载别人的,只为了以后记录
Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in cls_template.php on line 300
1、错误原因:
preg_replace() 函数中用到的修饰符 /e 在 PHP5.5.x 中已经被弃用了。
如果你的PHP版本恰好是PHP5.5.X,那你的ECSHOP肯定就会报类似这样的错误。
2、解决办法:
一、将 cls_template.php的300行
1
return
preg_replace(
"/{([^\}\{\n]*)}/e"
,
"\$this->select('\\1');"
,
$source
);
换成:
1
return
preg_replace_callback(
"/{([^\}\{\n]*)}/"
,
function
(
$r
) {
return
$this
->select(
$r
[1]); },
$source
);
二、将cls_template.php的493行
1
$out
=
"<?php \n"
.
'$k = '
. preg_replace(
"/(\'\\$[^,]+)/e"
,
"stripslashes(trim('\\1','\''));"
, var_export(
$t
, true)) .
";\n"
;
换成:
1
$out
= <?php \n
" . '$k = ' . preg_replace_callback("
/(\
'\\$[^,]+)/" , function($r) {return stripslashes(trim($r[1],'
\
''
));}, var_export(
$t
, true)) . ";\n";
三、将cls_template.php的552行
1
$val
= preg_replace(
"/\[([^\[\]]*)\]/eis"
,
"'.'.str_replace('$','\$','\\1')"
,
$val
);
换成:
1
$val
= preg_replace_callback(
"/\[([^\[\]]*)\]/"
,
function
(
$r
) {
return
'.'
.
str_replace
(
'$'
,
'$'
,
$r
[1]);},
$val
);
四、将cls_template.php的1069行
1
2
3
$pattern
=
'/<!--\s#BeginLibraryItem\s\"\/(.*?)\"\s-->.*?<!--\s#EndLibraryItem\s-->/se'
;
$replacement
=
"'{include file='.strtolower('\\1'). '}'"
;
$source
= preg_replace(
$pattern
,
$replacement
,
$source
);
换成:
1
2
$pattern
=
'/<!--\s#BeginLibraryItem\s\"\/(.*?)\"\s-->.*?<!--\s#EndLibraryItem\s-->/s'
;
$source
= preg_replace_callback(
$pattern
,
function
(
$r
){
return
'{include file='
.
strtolower
(
$r
[1]).
'}'
;},
$source
);
0 0
- preg_replace()和preg_replace_callback
- PHP正则替换函数preg_replace和preg_replace_callback使用总结
- PHP正则替换函数preg_replace和preg_replace_callback使用总结
- smarty如何完美兼容php5.5和preg_replace_callback如何替换preg_replace
- smarty如何完美兼容php5.5+和preg_replace_callback如何替换preg_replace
- preg_replace()替换成preg_replace_callback() php5.5之后
- ecshop中preg_replace替换为preg_replace_callback需要注意的事项
- preg_replace_callback
- deprecated preg_replace the e modifier is deprecated use preg_replace_callback instead in
- Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in ...
- preg_replace
- preg_replace
- preg_replace
- preg_replace()和preg_match_all()用法比较
- PHP中str_replace和preg_replace
- preg_replace和pathinfo,htmlspecialchars解析
- 嗯。。。。preg_replace_callback
- 比较strtr, str_replace和preg_replace的效率
- 如何消除谷歌浏览器中的广告
- 设计一个界面动效的时候,我们需要考虑什么?
- 理解OAuth 2.0
- nginx添加模块(非覆盖安装)
- 字符编码:assii、Unicode和UTF-8
- preg_replace()和preg_replace_callback
- LeetCode 2016 37,65,212,84,130,218
- PHP中str_replace字符串替换函数详解
- Poincaré on Mathematical Creation
- MySql 的事务隔离级别
- 36. Spring Boot Cache理论篇【从零开始学Spring Boot】
- Mybatis浅析与应用
- 今天
- 精通 CSS+DIV 网页样式与布局 121