preg_replace, str_replace y substr_replace no funcionan en condiciones especiales

Tengo el siguiente código: este código encuentra todas las etiquetas html en una cadena y las reemplaza con [[0]], [[1]], [[2]] y así sucesivamente. (Al menos eso está intentado pero no 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 encuentra todas las etiquetas en una cadena y las reemplaza con [[0]], [[1]] y [[2]] y así sucesivamente. he utilizadopreg_match_all con PREG_OFFSET_CAPTURE. La salida depreg_match_all es como se esperaba. Sin embargo,preg_replace, substr_replaceystr_replace No funcionan al sustituir las etiquetas con[[$count]]. He intentado los tres métodos de reemplazo de cadenas y ninguno de ellos funciona. Por favor, apúntame en la dirección correcta. ¿Puede algo en php.ini causar esto? Gracias por adelantado.

Respuestas a la pregunta(2)

Su respuesta a la pregunta