5

我正在使用 php 来查看其中包含 URL 的 XML 文件。URL 看起来像这样:

https://site.com/bacon_report?Id=1&report=1¤tDimension=2¶m=1

当我回显 URL 时,“¤”显示为“¤”(AKA #164、A4 或货币符号)并且链接不起作用。即使没有结束分号,也会发生这种情况。从字面上制作“&curren”显示的最干净的方法是什么?

4

5 回答 5

9

有趣的是,我刚才遇到了同样的问题,我找到了这个答案。但是,我找到了另一个可能更好的解决方案!

只需将变量放在查询字符串的开头,您就可以完全避免 ¤。

做:

https://site.com/bacon_report?currentDimension=2&Id=1&report=1&param=1

代替:

https://site.com/bacon_report?Id=1&report=1&currentDimension=2&param=1
于 2013-10-30T20:04:33.107 回答
8

使用 php 函数 urlencode:

urlencode("https://site.com/bacon_report?Id=1&report=1&currentDimension=2&param=1"

将输出

https%3A%2F%2Fsite.com%2Fbacon_report%3FId%3D1%26report%3D1%26currentDimension%3D2%26param%3D1 
于 2013-10-29T22:34:45.883 回答
6

这里的问题是转义 - 您需要转义“&”字符。在 XML 中,所有特殊字符,如 <、>、'、" 和 & 都应该被转义。

将其正确转义为

https://example.com/bacon_report?Id=1&amp;report=1&amp;currentDimension=2&amp;param=1

..就像在 HTML 中一样:

<a href="https://example.com/bacon_report?Id=1&report=1&currentDimension=2&param=1">WRONG - no escaping</a>
<a href="https://example.com/bacon_report?Id=1&amp;report=1&amp;currentDimension=2&amp;param=1">CORRECT - correct escape sequence</a>

所以 - 在 HTML/XML 中显示“¤”的最简洁的方法是正确地转义 & 符号,并将其呈现为“&curren”。

于 2015-02-05T14:34:10.763 回答
0

我在处理技术文档时遇到了这个问题(在转换为 HTML 的 Markdown 中)。

为了解决这个问题,我使用了从这些括号 (​) 之间复制和粘贴的零宽度空格字符。这样看来,没有空间,可以包括以下内容而没有任何问题: /search?query=1&currentLonLat=-74.600291,40.360869

于 2019-12-04T08:11:07.233 回答
0

我认为在这种情况下最好使用 htmlentities 因为使用 urlencode 你会得到 https%3A%2F%2Fexample.com%2Fbacon_report%3FId%3D1%26report%3D1%26currentDimension%3D2%26param%3D1

并且在应用 urldecode 时,您仍然会有 ¤ 符号,其中与 htmlentities 一样,url 是干净的。
https://example.com/bacon_report?Id=1&report=1&currentDimension=2&param=1

于 2016-12-23T16:06:24.967 回答