我的浏览器告诉我:
error on line 2 at column 308899: Entity 'ntilde' not defined
并且特定行在我的xml中为:
<LastName>Treviño</LastName>
名字原本是Treviño
,但是通过php的htmlentities
函数修改了。
我该怎么做才能让 php 和 xml 玩得很好?
在 Mac 上使用 Chrome 19。
显然使用htmlspecialchars
和htmlentities
串联可以解决问题。
htmlspecialchars(htmlentities($value));
您实际上是在生成 XML 还是 HTML?他们不是一回事。HTML 定义了一堆实体(IIRC),而 XML 几乎没有“内置”——只有一些像&
和<
.
当您可以直接使用文本时,为什么还要使用实体?只需确保您使用的编码是一致的(UTF-8 将是一个不错的选择)。
您不需要在 XML 中编码波浪字符。它会抛出错误。在这种情况下,最好的办法可能是将文本包装在 CDATA 中。
<LastName><![CDATA[Treviño]]></LastName>
尝试为 htmlentities 指定编码
htmlentities($string,ENT_QUOTES,'UTF-8');
应该是:Treviño。您的 DTD 文件中可能缺少实体?像这样的东西:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Customer
[
<!ENTITY ntilde "ñ">
]>
<Customer>
<LastName>Treviño</LastName>
</Customer>