DOMDocument saveHTML с неправильным выводом - PullRequest
0 голосов
/ 22 ноября 2018

У меня есть этот простой код:

$input = '<p>ěščřžýáíé</p><p><img alt="" src="http://www.test.com/img.jpg" style="width: 100px; height: 100px;"></p>';
$dom = new DOMDocument('1.0', 'UTF-8');
$dom->encoding = 'UTF-8';
$dom->loadHTML($input, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
$imgs = $dom->getElementsByTagName('img');
foreach($imgs as $img){
    $src = $img->getAttribute('src');
    $style = $img->getAttribute('style');
    $newSrc = 'http://www.test.com/img001.jpg';
    $img->setAttribute( 'src' , $newSrc );
}
$content = $dom->saveHTML();

Проблема в том, что выход закодирован.Я ожидаю те же символы, что и на входе.Я пытался расшифровать без успеха.Что-то не так с использованием объекта DOM?

<p>&Auml;&#155;&Aring;&iexcl;&Auml;&#141;&Aring;&#153;&Aring;&frac34;&Atilde;&frac12;&Atilde;&iexcl;&Atilde;&shy;&Atilde;&copy;<p><img alt="" src="http://www.test.com/img001.jpg" style="width: 100px; height: 100px;"></p></p>

1 Ответ

0 голосов
/ 22 ноября 2018

saveHTML() имеет несколько «функций», которые я не понимаю, но при сохранении с конкретным узлом документа он будет работать, если вы затем utf8_decode() результат ...

$content = utf8_decode($dom->saveHTML($dom->documentElement));

дает ...

<p>ěščřžýáíé<p><img alt="" src="http://www.test.com/img001.jpg" style="width: 100px; height: 100px;"></p></p>
...