Se muestra el carácter "Â" en lugar de "& nbsp;"
encontréeste hilo que describe mi problema bastante bien yesta La respuesta describe mi problema exactamente.
El carácter de espacio sin ruptura es el byte 0xA0 es ISO-8859-1; cuando se codifica a UTF-8, sería 0xC2,0xA0, que, si (incorrectamente) lo ve como ISO-8859-1 sale como"Â "
. Eso incluye un nbsp final ...
Sin embargo, he logrado rastrear mi problema hasta una función que uso para envolver etiquetas de imagen en divs.
function img_format($str)
{
$doc = new DOMDocument();
@$doc->loadHTML($str); // <-- Bonus points for the explaination of the @
// $tags object
$tags = $doc->getElementsByTagName('img');
foreach ($tags as $tag) {
$div = $doc->createElement('div');
$div->setAttribute('class','inner-copy');
$tag->parentNode->insertBefore($div, $tag);
$div->appendChild($tag);
$tag->setAttribute('class', 'inner-img');
}
$str = $doc->saveHTML();
return $str;
}
En pocas palabras, ¿cómo puedo solucionar este problema dentro de esta función?
Entiendo usar;
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
solucionará este problema, pero obviamente hay algo que estoy pasando por alto dentro de la función misma.
He intentado;
$dom->validateOnParse = true;
En vano. (No sé qué hace eso de todos modos)