Copy & Paste Engineer

【PHP】DOMDocument で発生する文字化けの対策方法

【PHP】DOMDocument で発生する文字化けの対策方法

PHP DOMDocument を利用した際に発生する文字化けの対策方法です。

文字化けコード

$domDocument = new DOMDocument();
$domDocument->loadHTML($html);

原因

loadHtml は渡された文字列を ISO-8859-1 で解析するため。 PHP: DOMDocument::loadHTML - Manual

文字化け対策

文字化け対策は2種類あります。

# HTMLにエンコードをかける
$domDocument->loadHTML(mb_convert_encoding($html, 'HTML-ENTITIES', 'UTF-8'));
# HTMLにエンコードの指定を付与
$domDocument->loadHTML('<?xml encoding="utf-8" ?>' . $html);

参考