我有一个php文件,它打印基于MySQL数据库的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: no name

然后它指向一个确切的字符,即&号.

只有当$dbrow['category']是带有&符号的东西,例如"cars & trucks"或"computers & telephones"时,才会出现这种情况.

有人知道问题出在哪里吗?

顺便说一下:我在所有文档以及XML输出中都将编码设置为UTF-8.

推荐答案

XML中的&开始一个实体.因为您还没有定义实体&WhateverIsAfterThat,所以会抛出一个错误.你应该用&amp;逃脱它.

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

How do I escape ampersands in XML

要转义其他保留字符,请执行以下操作:

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

Database相关问答推荐

我如何计算mongo中的多个字段?

[mongodb],如何通过聚合获得具有许多不同字段的文档的最大值?子字段名称相同

如何在华为Appcube中创建和使用对象(模型)?

Spring Data JPA 对 SQL 注入安全吗

如果我使用存储过程,我对 SQL 注入免疫吗?

如何在 sql server 2005 中获取到数据库的详细连接列表?

Sql更新查询

苹果 ios 购买收据数据的可能最大长度是多少?

每个请求可以多次查询 MongoDB 吗?

数据库表中的索引有什么缺点?

在服务器上排序还是在客户端排序?

对于 Postgres (Windows),有没有像 TOAD 一样好的东西?

SQL Server 2005 是否具有与 MySql 的 ENUM 数据类型等效的数据类型?

如何在 SSIS 中插入新记录之前清空我的目标表?

如何在我的 SQL Server 代理作业(job)中创建一个将运行我的 SSIS 包的步骤?

如何在 Windows 中将用户添加到 PostgreSQL?

我在哪里可以获得所有国家/地区的邮政编码?

C# IEnumerator/yield struct 可能不好?

Oracle order NULL LAST 默认

获取 SQL Server 2008 中新插入行的主键