我的浏览器告诉我:
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
答案 0 :(得分:4)
显然使用htmlspecialchars
和htmlentities
可以解决问题。
htmlspecialchars(htmlentities($value));
答案 1 :(得分:1)
您实际上是在生成XML还是HTML?他们不是一回事。 HTML定义了一堆实体(IIRC),而XML很少有内置的&#34; - 只有一些像&
和<
。
为什么在直接使用文本时都使用实体?只需确保您对所使用的编码保持一致(UTF-8将是一个不错的选择)。
答案 2 :(得分:0)
您不需要在XML中编码波形符。它会抛出错误。在这种情况下,最好的办法可能是将文本包装在CDATA中。
<LastName><![CDATA[Treviño]]></LastName>
答案 3 :(得分:0)
尝试指定htmlentities的编码
htmlentities($string,ENT_QUOTES,'UTF-8');
答案 4 :(得分:0)
应该是:Treviño。 您的 DTD 文件中可能缺少实体? 像这样:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Customer
[
<!ENTITY ntilde "ñ">
]>
<Customer>
<LastName>Treviño</LastName>
</Customer>