如何在preg_replace中调用函数?

时间:2014-01-21 17:03:25

标签: php preg-replace

如何在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美元。

1 个答案:

答案 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)。