preg_replace, str_replace e substr_replace não funcionam em condições especiais

Eu tenho o seguinte código: este código encontra todas as tags html em uma string e as substitui por [[0]], [[1]], [[2]] e assim por diante (pelo menos é intencional mas não funciona) ;

$str = "some text <a href='/review/'>review</a> here <a class='abc' href='/about/'>link2</a> hahaha";
preg_match_all("|<[^>]+>(.*)</[^>]+>|U",$str, $out, PREG_OFFSET_CAPTURE);

$count = 0;


foreach($out[0] as $result) {

$temp=preg_quote($result[0],'/');

$temp ="/".$temp."/";
preg_replace($temp, "[[".$count."]]", $str,1);


$count++;   
}
var_dump($str);

Este código encontra todas as tags em uma string e as substitui por [[0]], [[1]] e [[2]] e assim por diante. Eu tenho usadopreg_match_all&nbsp;com PREG_OFFSET_CAPTURE. A saída depreg_match_all&nbsp;é como esperado. Contudo,preg_replace, substr_replaceestr_replace&nbsp;não funciona quando substituir as tags por[[$count]]. Eu tentei todos os três métodos de substituição de seqüência de caracteres e nenhum deles funciona. Por favor me aponte na direção correta. Alguma coisa no php.ini pode causar isso? Desde já, obrigado.