我無法弄清楚如何阻止DOMDocument使這些字符變形。在PHP中禁用html實體編碼DOMDocument
<?php
$doc = new DOMDocument();
$doc->substituteEntities = false;
$doc->loadHTML('<p>¯\(°_o)/¯</p>');
print_r($doc->saveHTML());
?>
預期輸出: ¯(°_O)/¯
實際輸出: Â ¯(Â ° _O)/ Â ¯
我無法弄清楚如何阻止DOMDocument使這些字符變形。在PHP中禁用html實體編碼DOMDocument
<?php
$doc = new DOMDocument();
$doc->substituteEntities = false;
$doc->loadHTML('<p>¯\(°_o)/¯</p>');
print_r($doc->saveHTML());
?>
預期輸出: ¯(°_O)/¯
實際輸出: Â ¯(Â ° _O)/ Â ¯
我已經發現了提示http://php.net/manual/en/domdocument.loadhtml.php
(在Gmail的點com評論從<mdmitry> 12月21日2009年5時02分: 「你還可以加載HTML爲UTF-8使用這種簡單的黑客」)
的HTML的前只需添加'<?xml encoding="UTF-8">'
輸入:
$doc = new DOMDocument();
//$doc->substituteEntities = false;
$doc->loadHTML('<?xml encoding="UTF-8">' . '<p>¯\(°_o)/¯</p>');
print_r($doc->saveHTML());
<?xml version="1.0" encoding="utf-8">
在文檔的頂部需要照顧的標籤。對於這兩個saveXML和saveHTML。
爲什麼要在HTML文檔中使用這種亂碼? –
無論如何,它更有可能是你的編輯器/文件傳輸程序/ PHP代碼不是Unicode的事實是「篡改」它們,而不是「DOMDocument」有任何問題。 –
我在這裏找到了答案: http://stackoverflow.com/questions/2142120/php-encoding-with-domdocument/2671410#2671410只需使用mb_convert_encoding($ string,'html-entities','utf-8' ); – anonymous