ホームページ >バックエンド開発 >PHPチュートリアル >XML を使用した PHP の simplexml_load_string の「入力が適切な UTF-8 ではありません」エラーを解決する方法

XML を使用した PHP の simplexml_load_string の「入力が適切な UTF-8 ではありません」エラーを解決する方法

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-10-24 07:13:02717ブラウズ

How to Resolve

PHP で simplexml_load_string を使用して XML をロードするときの無効な UTF-8 エンコーディングの処理

外部ソースからの XML 応答を処理するときに、次のエラーが発生する可能性があります: 「入力は適切な UTF-8 ではありません。エンコーディングを示してください!」宣言されたエンコーディングと実際のコンテンツの不一致が原因です。

問題の特定

XML コンテンツを宣言されたエンコーディングと照合して検証します。本当に UTF-8 ではない場合は、エンコーディングの非互換性を前処理して修正する解決策を見つける必要があります。

前処理オプション

  • utf8_encode(): この関数を使用すると問題が解決される可能性がありますが、XML に有効な UTF-8 と他の文字セットの両方が含まれている場合は mojibake が発生する可能性があります。
  • iconv()または mbstring: 無効な文字を無視して、文字列を UTF-8 から UTF-8 に変換しようとします。

手動の検証と修正

これこのアプローチには UTF-8 の知識が必要で、複雑ですが、正確な修正が可能です。

部分的な解決策

一時的な回避策として、以下に提供される関数を使用して一部を修正することを検討してください。エンコードの問題:

<code class="php">function fix_latin1_mangled_with_utf8_maybe_hopefully_most_of_the_time($str)
{
    return preg_replace_callback('#[\xA1-\xFF](?![\x80-\xBF]{2,})#', 'utf8_encode_callback', $str);
}

function utf8_encode_callback($m)
{
    return utf8_encode($m[0]);
}</code>

ベスト プラクティス

無効なエンコードについてデータ プロバイダーに通知し、永続的な修正をリクエストします。文字エンコーディングを適切に処理すると、相互運用性が保証され、予期しない動作が防止されます。

以上がXML を使用した PHP の simplexml_load_string の「入力が適切な UTF-8 ではありません」エラーを解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。