ホームページ > バックエンド開発 > PHPチュートリアル > PHP DOMDocument::loadHTML() が UTF-8 を正しく処理しないのはなぜですか?

PHP DOMDocument::loadHTML() が UTF-8 を正しく処理しないのはなぜですか?

Barbara Streisand
リリース: 2024-12-25 12:12:14
オリジナル
883 人が閲覧しました

Why is my PHP DOMDocument::loadHTML() not handling UTF-8 correctly?

PHP DOMDocument loadHTML が UTF-8 を正しくエンコードしていない

問題:

HTML 解析時PHP の DOMDocument::loadHTML()、UTF-8 文字を使用正しく解釈されず、出力が歪められます。

原因:

DOMDocument は、デフォルトで入力文字列が ISO-8859-1 エンコーディングであると想定します。ただし、HTML5 では UTF-8 が一般的に使用されます。エンコードを指定せずに UTF-8 文字列をロードすると、DOMDocument が文字列を誤って解釈します。

解決策:

この問題に対処するには、入力に正しいエンコードを指定する必要があります。弦。いくつかのオプションがあります:

  • XML エンコーディング宣言を先頭に追加します:
  • を追加します。
  • メタ charset 宣言を使用します:
  • にタグを付けます。
  • SmartDOMDocument ライブラリを使用します:
  • このライブラリは、DOMDocument に読み込む前に文字列を HTML エンティティに変換することで問題を回避します。
  • mb_encode_numericentity() 関数を使用します。
  • この関数は、UTF-8 文字を HTML エンティティに変換します。

例:

このコードは、mb_encode_numericentity() 関数の使用方法を示しています:
$profile = '<p>イリノイ州シカゴにて、アイルランド系の家庭に</p>';
$dom = new DOMDocument();
$dom->loadHTML(mb_encode_numericentity($profile, [0x80, 0x10FFFF, 0, ~0], 'UTF-8'));
echo $dom->saveHTML();
ログイン後にコピー

これらの手法を使用すると、UTF-8 文字が確実に解析され、正しく表示されるようになります。 PHP DOMDocument.

以上がPHP DOMDocument::loadHTML() が UTF-8 を正しく処理しないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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