4

我正在使用一个 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&amp;mid=32532&amp;dl=http://www.google.com/&amp;aref=chris'); ?></node>

但是,当它生成 XML 提要时,字符串会以完整形式出现&amp; ,因此实际 URL 不起作用。如果这是一个非常基本的误解,我们深表歉意,但一些指导会很棒。

我也尝试过使用%26而不是,&amp;但仍然遇到同样的问题。

4

2 回答 2

8

如果你在 XML/HTML 中插入一些东西,你应该总是使用htmlspecialchars函数。这会将您的字符串转义为正确的 XML 语法。

但你遇到了第二个问题。您已在第一个网址中添加了第二个网址。这种需求也转义为 url 语法。为此,您需要使用urlencode

<node><?php echo htmlspecialchars('http://aflite.co.uk/track/?aid=13414&mid=32532&aref=chris&dl='.urlencode('http://www.google.com/')); ?></node>
于 2011-06-30T09:52:05.273 回答
4

&amp;对于在 XML 文档中转义 & 符号是正确的。您给出的示例应该有效。

您声明它不起作用,但您没有说明您正在使用什么应用程序,或者它以什么方式不起作用。当你点击链接时究竟会发生什么?字符串是否&amp;最终出现在浏览器的 URL 字段中?如果是这种情况,这听起来像是您用来查看 XML 的软件有问题。您是否尝试在另一个应用程序中查看 XML 以查看问题是否一致?

回答你问题的最后一部分:%26绝对不适合你——如果你的 URL 参数需要包含与号,这就是你会使用的。例如在 中aref=chris,如果名称chris是一个 & 符号(假设用户名是chris&bob),那么该 & 符号需要使用转义,%26以便 URL 解析器不会将其视为开始一个新的 URL 参数。

希望有帮助。

于 2011-06-30T09:46:33.550 回答