一尘不染

&符号(&)处的XML错误

mysql

我有一个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 ”。

有人知道是什么问题吗?

顺便说一句:我在所有文档中都将编码设置为UTF-8,并且将xml输出设置为。


阅读 308

收藏
2020-05-17

共1个答案

一尘不染

&在XML中启动实体。由于您尚未定义实体&WhateverIsAfterThat,因此会引发错误。您应该使用来逃避它&amp;

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

如何在XML中转义“&”号

要转义其他保留字符:

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