您尝试做的事情(即用函数调用的结果替换匹配的字符串)不能使用
preg_replace完成,您需要使用
preg_replace_callback来获取每个匹配调用的函数.
preg_replace_callback的简短示例;
$get_site_url = // Returns replacement
function($row) {
return '!'.$row[1].'!'; // row[1] is first "backref"
};
$str = 'olle';
$regex = '/(ll)/'; // String to match
$output = preg_replace_callback( // Match, calling get_site_url for replacement
$regex,
$get_site_url,
$str);
var_dump($output); // output "o!ll!e"