35

以下のように、PHP ライブラリを使用して XML を生成しています。

$dom = new DOMDocument("1.0","utf-8");

上記を実行すると、出力の上にメッセージを表示するページが表示されます。

このページには次のエラーが含まれています: 行 16、列 274505 のエラー: PCDATA 無効な Char 値 27 以下は、最初のエラーまでのページのレンダリングです。

Tidy ライブラリを使用して修正を試みました。iconv を使用して UTF-8 の漢字を取得しました。

4

2 に答える 2

106

そのエラーを取り除くための便利な機能がこのウェブサイトで提案されています。 http://www.phpwact.org/php/i18n/charsets#common_problem_areas_with_utf-8

utf-8でエンコードされた文字列をXMLドキュメントに入れる場合、すべてのutf-8有効な文字がXMLドキュメントで受け入れられるわけではないことに注意してくださいhttp://www.w3.org/TR/REC-xml/#charsets

したがって、不要な文字を取り除く必要があります。そうしないと、上記のようなXMLの致命的な解析エラーが発生します。

function utf8_for_xml($string)
{
    return preg_replace ('/[^\x{0009}\x{000a}\x{000d}\x{0020}-\x{D7FF}\x{E000}-\x{FFFD}]+/u', ' ', $string);
}

それが他の誰かの時間を節約することを願っています。

于 2012-09-04T14:44:20.517 に答える