DOMDocument を使用して HTML を解析していますが、エンコードが失われているようですHTMLをロードするとき。 HTML 内の日本語の文字は文字化けしたテキストに置き換えられますが、HTML 文字列を echo 経由で直接出力すると正しく表示されます。
DOMDocument は入力文字列が ISO-8859-1 であると想定します。デフォルトでは (HTTP/1.1 のデフォルト文字セット)。 UTF-8 文字列を解析する場合、この誤った仮定により誤解が生じ、文字化けが発生します。
DOMDocument が HTML 文字列を正しいエンコーディングで確実にロードするには、いくつかのオプションがあります。
メタ文字セット宣言を使用した例を次に示します。
$profile = '<p>イリノイ州シカゴにて、アイルランド系の家庭に、9</p>'; $dom = new DOMDocument(); // Add meta charset declaration $contentType = '<meta http-equiv="Content-Type" content="text/html; charset=utf-8">'; $dom->loadHTML($contentType . $profile); echo $dom->saveHTML();
これにより、HTML 文字列が正しい UTF-8 エンコーディングでロードされます。 、元の日本語文字を保持します。
以上がPHP DOMDocument のloadHTML 関数が UTF-8 エンコーディングを正しく処理しないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。