php5.6 preg_replace,preg_replace - ecshop在php5.6下的错误。

ecshop在php5.6下的错误。在5.3下是正常的。应该是PHP高版本函数变化了。

错误提示:

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/wwwroot/www.ufeelwine.com/includes/cls_template.php on line 1061

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/wwwroot/www.ufeelwine.com/includes/cls_template.php on line 483

具体网页地址:

http://www.ufeelwine.com/supplier.php?suppId=7

第483行:

$out = "_echash . $k[\'name\'] . \'|\' . serialize($k) . $this->_echash;' . "\n?>";

第1061行:

$pattern = '/.*?/se';

$replacement = "'{include file='.strtolower('\\1'). '}'";

$source = preg_replace($pattern, $replacement, $source);

应该怎么改写呢?

回复内容:

ecshop在php5.6下的错误。在5.3下是正常的。应该是PHP高版本函数变化了。

错误提示:

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/wwwroot/www.ufeelwine.com/includes/cls_template.php on line 1061

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/wwwroot/www.ufeelwine.com/includes/cls_template.php on line 483

具体网页地址:

http://www.ufeelwine.com/supplier.php?suppId=7

第483行:

$out = "_echash . $k[\'name\'] . \'|\' . serialize($k) . $this->_echash;' . "\n?>";

第1061行:

$pattern = '/.*?/se';

$replacement = "'{include file='.strtolower('\\1'). '}'";

$source = preg_replace($pattern, $replacement, $source);

应该怎么改写呢?

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

//-- 修改成

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

//-- 原本

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

//-- 修改成

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

//-- 原本

$out = "

//-- 修改成

$out = "

//--- 原本

$pattern = '/.*?/se';

$replacement = "'{include file='.strtolower('\\1'). '}'";

$source = preg_replace($pattern, $replacement, $source);

//--- 修改成

$pattern = '/.*?/s';

$replacement = function ($r) { return '{include file='.strtolower($r[1]). '}'; };

$source = preg_replace_callback($pattern, $replacement, $source);

试试,没有环境没办法测试,根据提示信息改的

第483行:改成

$out = "

第1061行:改成

//$pattern = '/.*?/se';

//$replacement = "'{include file='.strtolower('\\1'). '}'";

$source = preg_replace('/.*?/se', function($r) { return '{include file='.strtolower('\\1'). '}';}, $source);

提示很清楚了啊

把preg_replace换成preg_replace_callback

看看preg_replace_callback的用法就明白了

/*

1、e参数去掉

2、后面的\1换成回调的数组对应的元素

*/

//483行

$out = "

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值