2011-08-20 24 views
8

No puedo encontrar la manera de evitar que DOMDocument modifique estos caracteres.Deshabilitar la codificación de entidad html en PHP DOMDocument

<?php 

$doc = new DOMDocument(); 
$doc->substituteEntities = false; 
$doc->loadHTML('<p>¯\(°_o)/¯</p>'); 
print_r($doc->saveHTML()); 

?> 

Resultados esperados: ¯ (° _o)/¯

salida real: Â ¯ (Â ° _o)/Â ¯

http://codepad.org/W83eHSsT

+0

¿Por qué querrías ese galimatías en un documento HTML? –

+0

De todos modos, es más probable que su editor/programa de transferencia de archivos/el hecho de que el código PHP no sea Unicode los esté "destruyendo", que es que 'DOMDocument' tiene algún problema. –

+0

Encontré la respuesta aquí: http://stackoverflow.com/questions/2142120/php-encoding-with-domdocument/2671410#2671410 Solo usa mb_convert_encoding ($ string, 'html-entities', 'utf-8'); – anonymous

Respuesta

3

he encontrado una sugerencia en los comentarios en http://php.net/manual/en/domdocument.loadhtml.php

(Comentario de < mdmitry en gmail punto com > 21-dic-2009 05:02: "También puede cargar HTML como UTF-8 utilizando este sencillo truco:")

Sólo tiene que añadir antes de la '<?xml encoding="UTF-8">' en HTML entrada:

$doc = new DOMDocument(); 
//$doc->substituteEntities = false; 
$doc->loadHTML('<?xml encoding="UTF-8">' . '<p>¯\(°_o)/¯</p>'); 
print_r($doc->saveHTML()); 
+1

No funciona. Intenté todo en esa página ya. http://codepad.org/Sr3d710Q – anonymous

+0

Funciona para mí. Usando UTF-8 para archivos PHP, lo he probado. No sé, lo que Codepad está haciendo internamente, pero son entidades que regresan ... – feeela

2
<?xml version="1.0" encoding="utf-8"> 

en la parte superior del documento se ocupa de etiquetas .. tanto para saveXML y saveHTML.

Cuestiones relacionadas