我正在使用一个XML提要,该提要作为其节点之一,有一个类似于以下内容的URL字符串:
http://aflite.co.uk/track/?aid=13414&mid=32532&dl=http://www.google.com/&aref=chris
我知道与号在XML中会引起很多问题,应该使用&
而不是裸&
进行转义。因此,我将php改为如下:
<node><?php echo ('http://aflite.co.uk/track/?aid=13414&mid=32532&dl=http://www.google.com/&aref=chris'); ?></node>
但是,当生成XML提要时,字符串将显示完整的&
因此实际的URL不起作用。如果这是一个非常基本的误解,我们深表歉意,但一些指导会很好。
我也尝试过使用%26
而不是&
,但仍然遇到同样的问题。
如果要在XML/HTML中插入某些内容,则应始终使用htmlspecialchar函数。这将把字符串转义为正确的XML语法。
但是你遇到了第二个问题。您已经在第一个url上添加了第二个url。这种需要也转换为url语法。为此,您需要使用urlencode。
<node><?php echo htmlspecialchars('http://aflite.co.uk/track/?aid=13414&mid=32532&aref=chris&dl='.urlencode('http://www.google.com/')); ?></node>
&
对于转义XML文档中的符号是正确的。你举的例子应该行得通。
你说它不起作用,但你没有说明你正在使用什么应用程序,或者它以什么方式不起作用。当你点击链接时,会发生什么?&
字符串是否最终出现在浏览器的URL字段中?如果是这样的话,这听起来像是查看XML的软件出现了故障。您是否尝试过查看另一个应用程序中的XML,看看问题是否一致?
为了回答问题的最后一部分:%26
肯定不适合你——如果你的URL参数需要包含"与"符号,你会使用它。例如,在aref=chris
中,如果名称chris
是与号(假设用户名是chris&bob
),则需要使用%26
转义该与号,这样URL解析器就不会将其视为启动新的URL参数。
希望能有所帮助。