0

我的浏览器告诉我:

error on line 2 at column 308899: Entity 'ntilde' not defined

并且特定行在我的xml中为:

<LastName>Trevi&ntilde;o</LastName>

名字原本是Treviño,但是通过php的htmlentities函数修改了。

我该怎么做才能让 php 和 xml 玩得很好?


在 Mac 上使用 Chrome 19。

4

5 回答 5

4

显然使用htmlspecialcharshtmlentities串联可以解决问题。

htmlspecialchars(htmlentities($value));
于 2012-06-01T15:54:57.380 回答
1

您实际上是在生成 XML 还是 HTML?他们不是一回事。HTML 定义了一堆实体(IIRC),而 XML 几乎没有“内置”——只有一些像&amp;&lt;.

当您可以直接使用文本时,为什么还要使用实体?只需确保您使用的编码是一致的(UTF-8 将是一个不错的选择)。

于 2012-05-30T20:59:35.370 回答
0

您不需要在 XML 中编码波浪字符。它会抛出错误。在这种情况下,最好的办法可能是将文本包装在 CDATA 中。

<LastName><![CDATA[Trevi&ntilde;o]]></LastName>
于 2012-05-30T20:59:42.107 回答
0

尝试为 htmlentities 指定编码

htmlentities($string,ENT_QUOTES,'UTF-8');
于 2012-05-30T21:00:19.720 回答
0

应该是:Treviño。您的 DTD 文件中可能缺少实体?像这样的东西:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Customer
[
<!ENTITY ntilde "&#241;">
]>

<Customer>
<LastName>Trevi&ntilde;o</LastName>
</Customer>
于 2021-02-16T14:58:26.730 回答