我有一个函数,它使用preg_replace()
模式和替换是数组的地方。我需要一个计数器来跟踪替换,所以我将函数转换为preg_replace_callback
与闭包一起使用,但我似乎无法找到一种方法来区分传递给回调匹配的匹配模式。有没有办法使用 preg_replace_callback 进行数组 => 数组替换?
理想情况下,这是我想要工作的,但显然它不会因为 $pattern 和 $replace 在调用中被评估,而不是在每次替换之间
function replaceTags($text)
{
$i = 1;
$pattern = array(
'/\[d\](.*?)\[\/d\]/',
'/\[s\](.*?)\[\/s\]/',
);
$replace = array(
'<div id="'.($i++).'">$1</div>',
'<span id="'.($i++).'">$1</span>',
);
return preg_replace($pattern, $replace, $text);
}