PHP で simplexml_load_string を使用して XML をロードするときの無効な UTF-8 エンコーディングの処理
外部ソースからの XML 応答を処理するときに、次のエラーが発生する可能性があります: 「入力は適切な UTF-8 ではありません。エンコーディングを示してください!」宣言されたエンコーディングと実際のコンテンツの不一致が原因です。
問題の特定
XML コンテンツを宣言されたエンコーディングと照合して検証します。本当に 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 サイトの他の関連記事を参照してください。