html_entity_decode(" ") == '\xa0'
Creo que por diseño, no entiendo por qué str_replace no funciona para usted, trate de este fragmento:
$nbsp = html_entity_decode(" ");
$s = html_entity_decode("[ ]");
$s = str_replace($nbsp, " ", $s);
echo $s;
quizá \ XA0 que no es una cadena Unicode válida, por lo que usar el resultado de html_entity_decode() puede ser más apropiado para el reemplazo de texto en lugar de \ xa0.
BalusC explicación parece plausible, es posible intentar insertar utf8 \ xc2 \ xa0 en el entonces tratar de mostrarlo como latino en lugar de UTF-8, si desea utilizar Unicode cosas que usted debe tener codificación UTF-8 en todas partes, desde el juego de caracteres del servidor hasta la base de datos, ya que tendrá el mismo problema al usar, por ejemplo à
que "gira" o es interpretado por el navegador como tal? – yoda
¿Cómo se analiza el HTML? – deceze