php7中,preg_replace()不再支持"\e" (PREG_REPLACE_EVAL),需要使用preg_replace_callback()來代替。
看例子來說吧
$content = preg_replace("/{#(.+?)}/eis", '$lang[\'\\1\']', $content) ;
這是原來的代碼,在php7里不能被正確執行。
$content = preg_replace_callback("/{#(.+?)}/is", function($r)use($lang){ return $lang[$r[1]]; }, $content);
這是改過之后的代碼
需要注意:
1. preg_replace_callback第二個參數,callback()函數里,如果需要使用外部的變量,可以使用function callback($matchs)use($xxx){}
2. callback() 回調函數里,return 值會替換匹配到的內容