php7中使用preg_replace_callback()替代preg_replace()

php7中,preg_replace()再也不支持"\e" (PREG_REPLACE_EVAL),须要使用preg_replace_callback()来代替。php

 

看例子来讲吧php7

$content = preg_replace("/{#(.+?)}/eis", '$lang[\'\\1\']', $content) ;函数

这是原来的代码,在php7里不能被正确执行。回调函数

 

$content = preg_replace_callback("/{#(.+?)}/is", function($r)use($lang){ return $lang[$r[1]]; }, $content);io

这是改过以后的代码function

 

须要注意:变量

1. preg_replace_callback第二个参数,callback()函数里,若是须要使用外部的变量,可使用function callback($matchs)use($xxx){}call

2. callback() 回调函数里,return 值会替换匹配到的内容callback

相关文章
相关标签/搜索