PHP DOMDocument loadHTML出现乱码的解决方法

后端开发PHP 1342

DOMDocument::loadHTML默认编码是ISO-8859-1,所以我们需要做编码声明:

$dom->loadHTML(mb_convert_encoding($profile, 'HTML-ENTITIES', 'UTF-8')); 

完整测试代码:

$profile = '<div><p>イリノイ州シカゴにて、アイルランド系の家庭に、9</p></div>';
$dom = new DOMDocument();
$dom->loadHTML(mb_convert_encoding($profile, 'HTML-ENTITIES', 'UTF-8'));
echo $dom->saveHTML($dom->getElementsByTagName('div')->item(0));

另一种方法是在loadHTML的字符前加上编码声明:

$dom->loadHTML('<?xml encoding="utf-8" ?>' . $profile);

Post Comment