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
エラーがスローされます。 でエスケープする必要があります&
。
$string = str_replace('&', '&', $string);
XML でアンパサンドをエスケープするにはどうすればいいですか
その他の予約文字をエスケープするには:
function xmlEscape($string) {
return str_replace(array('&', '<', '>', '\'', '"'), array('&', '<', '>', ''', '"'), $string);
}