Отключить HTML-кодировку сущностей в PHP DOMDocument - PullRequest
8 голосов
/ 21 августа 2011

Я не могу понять, как остановить DOMDocument от искажения этих символов.

<?php

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

?>

Ожидаемый результат: ¯ (° _o) / ¯

Фактический вывод: ¯¯ ( ° _o) / Â

http://codepad.org/W83eHSsT

Ответы [ 2 ]

4 голосов
/ 21 августа 2011

Я нашел подсказку в комментариях к http://php.net/manual/en/domdocument.loadhtml.php

(Комментарий от21 декабря 2009 г. 05:02: «Вы также можете загрузить HTML как UTF-8, используя этот простой взлом:»)

Просто добавьте '<?xml encoding="UTF-8">' перед вводом HTML:

$doc = new DOMDocument();
//$doc->substituteEntities = false;
$doc->loadHTML('<?xml encoding="UTF-8">' . '<p>¯\(°_o)/¯</p>');
print_r($doc->saveHTML());
3 голосов
/ 19 октября 2012
<?xml version="1.0" encoding="utf-8">

в верхней части документа заботится о тегах .. и для saveXML, и для saveHTML.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...