如何在preg_replace()
内调用函数?
$template = '<div> [BILD="123"][BILD="246"] </div>';
$pat = '/\[BILD="(.*?)"\]\[BILD ="(.*?)"\]/';
$ret = getImageArea($id, $config, '$1', '$2');
return preg_replace($pat, $rep, $template);
无法打开该功能,并且不发送123或246。 它只发送1美元和2美元。
答案 0 :(得分:0)
正如我(以及其他许多人)在评论中所说,在这种情况下你必须使用preg_replace_callback。一种可能的方法:
$template = '<div> [BILD="123"][BILD="246"] </div>';
$pat = '/\[BILD="(.*?)"\]\[BILD="(.*?)"\]/';
return preg_replace_callback($pat, function($matches) use($id, $config) {
return getImageArea($id, $config, $matches[1], $matches[2]);
}, $template);
Demo。如你所见,这是非常直截了当的;唯一的问题是在回调中使用$id
和$config
变量(使用use
op)。