我有一个php文件,它基于MySql db打印xml。
每当出现 & 符号时,我都会出现错误。
这是一些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']带有带有 & 符号的东西时才抱怨,例如:“ cars&trucks ”或“ computers&phones ”。
$dbrow['category']
有人知道是什么问题吗?
顺便说一句:我在所有文档中都将编码设置为UTF-8,并且将xml输出设置为。
&在XML中启动实体。由于您尚未定义实体&WhateverIsAfterThat,因此会引发错误。您应该使用来逃避它&。
&
&WhateverIsAfterThat
&
$string = str_replace('&', '&', $string);
如何在XML中转义“&”号
要转义其他保留字符:
function xmlEscape($string) { return str_replace(array('&', '<', '>', '\'', '"'), array('&', '<', '>', ''', '"'), $string); }