如何使用DOMDocument安全地阅读html(不弄乱字符)?

问题描述 投票:0回答:1

当我在DOMDocument中加载html时,会弄乱字符。

在我的项目中,html源由用户定义,因此其内容可能会有很大差异。

我想找到一种安全的方法来解析来自各种来源的html内容。

通过安全,我主要是指

  • 保持字符串与原件一致

  • 免受无效编码攻击的保护

除非您认为我应该再担心其他问题。

nodeValue与这种情况下的textContent相同。

我创建了这个简化的函数来澄清问题:

<?php

function print_content($html)
{
    $dom = new DOMDocument();
    $dom->loadHTML($html);
    $div = $dom->getElementById('cyrillic_bit');
    $content = $div->textContent;

    print(mb_internal_encoding().' '.$html."\n");
    print(mb_detect_encoding($content, 'Windows-1251, UTF-8', true)." ");
    print($content."\n");
}

$html = '<div id="cyrillic_bit">Дядо Коледа<br>Error</div>';
print_content($html);

?>

输出为:

UTF-8 <div id="cyrillic_bit">Дядо Коледа<br>Error</div>
UTF-8 ÐÑдо ÐоледаError

我希望成为:

UTF-8 <div id="cyrillic_bit">Дядо Коледа<br>Error</div>
UTF-8 Дядо КоледаError
php html dom character-encoding
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.