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);
}