如果您发现任何错误,它将无效。
function replaceLink($matches){
$final = '<img src=\''.$path[$matches[1]].'\' alt=\''.$data['alt'].'\'/>';
return $final;
}
$message = preg_replace_callback('#\[img\]([1-3])\[/img\]#isU', 'replaceLink', $message);
我如何使用在函数外声明的变量?
答案 0 :(得分:0)
您没有传递函数,而是传递字符串:
$message = preg_replace_callback('...', 'replaceLink', $message);
应该是这样的:
$message = preg_replace_callback('...', replaceLink, $message);
答案 1 :(得分:0)
以这种方式调用函数
$message = preg_replace_callback('#\[img\]([1-3])\[/img\]#isU', 'replaceLink', $message);
没问题。应该工作。
但我在你的函数replaceLink()
function replaceLink($matches){
$final = '<img src=\''.$path[$matches[1]].'\' alt=\''.$data['alt'].'\'/>';
return $final;
}
您使用未在该$path
$data
中定义的变量。
如果它们是在函数外部定义的并且它们不是全局的,则它们将在replaceLink()
内为空,并且您应该得到错误。
尝试使用此代码
$message = preg_replace_callback(
'#\[img\]([1-3])\[/img\]#isU',
function($matches) use ($path, $data) {
$final = '<img src=\''.$path[$matches[1]].'\' alt=\''.$data['alt'].'\'/>';
return $final;
},
$message
);