2011-08-20 20 views
8

Non riesco a capire come impedire a DOMDocument di manipolare questi caratteri.Disabilita codifica entità HTML in PHP DOMDocument

<?php 

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

?> 

Output previsto: ¯ (° _o)/¯

uscita effettiva: Â ¯ (Â ° _o)/Â ¯

http://codepad.org/W83eHSsT

+0

Perché si desidera questo senza senso in un documento HTML? –

+0

In ogni caso, è più probabile che il tuo programma di trasferimento di file/editor/il fatto che il codice PHP non sia Unicode li "manipola", piuttosto che "DOMDocument" ha qualche problema. –

+0

Ho trovato la risposta qui: http://stackoverflow.com/questions/2142120/php-encoding-with-domdocument/2671410#2671410 Basta usare mb_convert_encoding ($ string, 'html-entities', 'utf-8'); – anonymous

risposta

3

Ho trovato un suggerimento nei commenti su http://php.net/manual/en/domdocument.loadhtml.php

(Commento di < mdmitry a gmail dot com > 21-Dec-2009 05:02: "È anche possibile caricare HTML come UTF-8 utilizzando questo semplice trucco:")

Basta aggiungere '<?xml encoding="UTF-8">' prima della HTML- ingresso:

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

Non funziona. Ho provato già tutto su quella pagina. http://codepad.org/Sr3d710Q – anonymous

+0

Funziona per me. Usando UTF-8 per i file PHP, l'ho provato. Non so, cosa sta facendo internamente il Codepad, ma stanno restituendo entità ... – feeela

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

nella parte superiore del documento si prende cura di tag .. sia per saveXML e saveHTML.

Problemi correlati