アンパサンド(&)でのXMLエラー 質問する

アンパサンド(&)でのXMLエラー 質問する

MySql db に基づいて xml を出力する php ファイルがあります。

毎回、サイン。

ここにPHPがあります:

$query = mysql_query($sql);

$_xmlrows = '';

while ($row = mysql_fetch_array($query)) {
    $_xmlrows .= xmlrowtemplate($row);
}

function xmlrowtemplate($dbrow){
    return "<AD>
              <CATEGORY>".$dbrow['category']."</CATEGORY>
            </AD>
}

出力は私が望んでいるものです。つまり、ファイルは正しいカテゴリを出力しますが、それでもエラーが発生します。

エラーには次のように書かれています:xmlParseEntityRef: 名前なし

そして、それはまさにその文字を指し示します。サイン。

これは$dbrow['category']次のようにサインインします。"車とトラック"、 または "コンピュータと電話「」。

何が問題なのか誰か知っていますか?

ところで、すべてのドキュメントと XML 出力のエンコードを UTF-8 に設定しています。

ベストアンサー1

&XML では、エンティティが始まります。エンティティを定義していないため、&WhateverIsAfterThatエラーがスローされます。 でエスケープする必要があります&amp;

$string = str_replace('&', '&amp;', $string);

XML でアンパサンドをエスケープするにはどうすればいいですか

その他の予約文字をエスケープするには:

function xmlEscape($string) {
    return str_replace(array('&', '<', '>', '\'', '"'), array('&amp;', '&lt;', '&gt;', '&apos;', '&quot;'), $string);
}

おすすめ記事