如何让 &curren 按字面意思显示,而不是作为 HTML 实体显示


How to get &curren to display literally, not as an HTML entity

我正在使用php查看包含URL的XML文件。网址如下所示:

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

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

有趣的是,

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

只需将变量放在查询字符串的开头,即可完全避免 &curren。

做:

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

使用 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 

这里的问题是转义 - 你需要转义"&"字符。在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"的最干净方法是正确转义与号,并将其呈现为"&curren"。

我认为在这种情况下

最好使用 htmlentities ,因为使用 urlencode 您可以获得 https%3A%2F%2Fexample.com%2Fbacon_report%3FId%3D1%26report%3D1%26currentDimension%3D2%26param%3D1

应用URLDECODE时,您仍将具有&curren符号与html实体一样,URL是干净的。
https://example.com/bacon_report?Id=1&report=1&currentDimension=2&param=1

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

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