DOMDocument saveHTML输出错误

时间:2018-11-22 16:02:33

标签: php domdocument

我有这个简单的代码:

$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 :(得分:2)

re1, _ := regexp.Compile(`^([A-Z]+)(\s"[^"]+")(\s"[^"]+")?(\s"[^"]+")?$`) 有一些我不了解的“功能”,但是当保存特定文档节点时,如果您然后(\s"[^"]+")?生成结果,它将起作用...

saveHTML()

给予...

utf8_decode()