ホームページ > バックエンド開発 > PHPチュートリアル > UTF-8 エンコーディングで PHP DOMDocument のloadHTML が失敗するのはなぜですか? どうすれば修正できますか?

UTF-8 エンコーディングで PHP DOMDocument のloadHTML が失敗するのはなぜですか? どうすれば修正できますか?

Barbara Streisand
リリース: 2024-12-30 16:48:09
オリジナル
833 人が閲覧しました

Why Does PHP DOMDocument's loadHTML Fail with UTF-8 Encoding, and How Can I Fix It?

PHP DOMDocument loadHTML は UTF-8 を正しくエンコードできません

DOMDocument のloadHTML メソッドは、入力が ISO-8859-1 でエンコードされていることを前提としています。 UTF-8 の不正なエンコードにつながる

DOMDocument で使用される基になるパーサーは HTML4 入力を想定しているため、HTML5 ドキュメントで問題が発生する可能性があります。

解決策:

この問題を解決するには、次のいずれかを使用して HTML の文字エンコーディングを指定します。メソッド:

XML エンコーディング宣言:

ContentType ヘッダー:

XML エンコーディング プレフィックス:

不明な HTML の回避策内容:

エンコーディングについて推測できない場合は、SmartDOMDocument または次の PHP コードのような回避策を採用してください:

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

PHP 8.2 の注意:

PHP 8.2 では、mb_convert_encoding 関数は非推奨の警告。代替案:

$dom->loadHTML(mb_encode_numericentity($profile, [0x80, 0x10FFFF, 0, ~0], 'UTF-8'));
ログイン後にコピー

理想的ではありませんが、この方法はすべての文字を ISO-8859-1 で表現できるため、安全なエンコードを保証します。

以上がUTF-8 エンコーディングで PHP DOMDocument のloadHTML が失敗するのはなぜですか? どうすれば修正できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート