php7中使用preg_replace_callback替换preg_replace
18-07-24 16:08
字数 102
阅读 3746
已编辑
php7中,preg_replace()
不再支持"\e" (PREG_REPLACE_EVAL),需要使用preg_replace_callback()
来代替。
比如下面的代码在php7是不行的。
$out = "<?php \n" . '$k = ' . preg_replace("/(\'\\$[^,]+)/e", "stripslashes(trim('\\1','\''));", var_export($t, true)) . ";\n";
需要使用preg_replace_callback
函数改造下。
$out = "<?php \n" . '$k = ' . preg_replace_callback("/(\'\\$[^,]+)/", function ($matches) {
return stripslashes(trim($matches[0], '\''));
},
var_export($t, true)) . ";\n";
如果在回调函数中要使用类的方法
class Template {
function fetch_str($source)
{
return preg_replace("/{([^\}\{\n]*)}/e", "\$this->select('\\1');", $source);
}
public function select($tag)
{
return stripslashes(trim($tag));
}
}
则需要改造成下面的形式。
class Template {
function fetch_str($source)
{
return preg_replace_callback("/{([^\}\{\n]*)}/", [$this, 'select'], $source);
}
public function select($tag)
{
return stripslashes(trim($tag[1]));
}
}
2人点赞>
0 条评论
排序方式
时间
投票
快来抢占一楼吧
请登录后发表评论
相关推荐
文章归档
最新文章
最受欢迎
22-11-16 10:13
21-10-18 12:11
21-10-17 23:27
20-08-18 17:58
20-01-06 12:12