【发布时间】:2015-08-12 09:11:46
【问题描述】:
我正在使用支付网关通过 CURL 发送 xml。使用 XML 验证器时出现以下错误:
XML 文档中的错误:实体“auml”被引用,但没有 声明。
所以我知道问题在于 ä,但是我不确定如何使用 PHP 解决此问题。
这是我传递的 xml 请求:
<request type='payer-new' timestamp='XXXXXX'>
<merchantid>XXXXXXXXX</merchantid>
<orderid>XXXXXXXXX</orderid>
<payer type='Business' ref='XXXXXXXXXXXXX'>
<firstname>Xäxxxx</firstname>
<surname>xäxxxxxx</surname>
<address>
<line1>XXXXXXXXXXXXX</line1>
<line2>XXXXXXXXXXXXX</line2>
<city>XXXXXXXXXXXXXXXX</city>
<postcode>XXXXXXXXXXXX</postcode>
<country code='FI'>Finland</country>
</address>
<phonenumbers>
<home>XXXXXXXXXXXXXXXXXXXXXXXXX</home>
</phonenumbers>
<email>XXXXXXXXXXXXXXXXXXXXXXXXXXXXX</email>
</payer>
<sha1hash>XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX</sha1hash>
</request>
我将 htmlentities 包裹在进入请求的所有变量周围,如下所示:
".htmlentities($_SESSION['W_CUSTOMER_FIRSTNAME'], ENT_QUOTES, “UTF-8”)。”
有没有一种方法可以处理包含这些字符的各种字符/名称/地点等?
在此先感谢
【问题讨论】:
-
不要使用
htmlentities,而是使用htmlspecialchars。 -
谢谢,我试试这个
-
从技术上讲,您对该函数使用了错误的参数。请参阅该函数的
ENT_XML1标志。但还有更多,我留下的答案给了你另一个建议。