网站建设

PC + 手机 + 微信网站 + 小程序 + APP,五端合一

当前位置:首页>新闻资讯>网站建设

smarty如何完美兼容php5.5和preg_replace_callback如何替换preg_replace

时间:2020-06-08   访问量:1169

现在PHP5.5版本出来了,我装了一下改动还真不小,咱们用的smarty居然不兼容了,一运行出现以下错误:

意思是说用preg_replace_callback来代替preg_replace里的/e参数,可能是因为安全性的考虑,在php5.5中把这个参数取消了,但是这个preg_replace_callback函数用起来不顺手,我就把那个Smarty_Compiler.class.php文件里的第270行里的preg_replace($search.'e'里的e去掉了,果然好了,可是问题又出来了,这个问题出来的几率不多,就是无法在smarty模板里写入php标签代码:{php}{/php}。

没办法还是要把这个preg_replace()用preg_replace_callback()函数来替换,具体替换方法如下:

在Smarty_Compiler这个类里加入一个方法:

function callback_source($matches){

return "".$this->_quote_replace($this->left_delimiter)."php".str_repeat("n",substr_count("","n"))."".$this->_quote_replace($this->right_delimiter)."";

}

然后在第270行左右找到:

$source_content = preg_replace($search.'e', "'"

. $this->_quote_replace($this->left_delimiter) . 'php'

. "' . str_repeat("n", substr_count('', "n")) .'"

. $this->_quote_replace($this->right_delimiter)

. "'"

, $source_content);

替换成:

$source_content = preg_replace_callback($search,

array("self","callback_source")

, $source_content);

即可,这样就可以完美兼容php5.5了。

本文发布于湖北众广网络 网站制作公司

上一篇:企业建网站登录验证漏洞

下一篇:公司网站制作下的Web前端开发设计

发表评论:

评论记录:

未查询到任何数据!

在线咨询

点击这里给我发消息 售前咨询专员

点击这里给我发消息 售后服务专员

在线咨询

免费通话

24小时免费咨询

请输入您的联系电话,座机请加区号

免费通话

微信扫一扫

微信联系
返回顶部