【问题标题】:How to get &curren to display literally, not as an HTML entity如何让 &curren 按字面意思显示,而不是作为 HTML 实体显示
【发布时间】:2013-10-29 22:28:34
【问题描述】:

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

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

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

【问题讨论】:

  • 您正在创建一个 URL;您必须遵守一些规则(网址编码)。

标签: php html url


【解决方案1】:

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

只需将变量放在查询字符串的开头,就可以完全避免 &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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    【解决方案3】:

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

    将其正确转义为

    https://example.com/bacon_report?Id=1&report=1&currentDimension=2&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”。

    【讨论】:

      【解决方案4】:

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

      当应用 urldecode 时,你仍然会有 &curren 符号 与 htmlentities 一样,url 干净。
      https://example.com/bacon_report?Id=1&report=1&currentDimension=2&param=1

      【讨论】:

        【解决方案5】:

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

        为了解决这个问题,我使用了zero-width space character,我从这些括号 (​) 之间复制并粘贴了它。这样看来,没有空间,可以包括以下内容而没有任何问题: /search?query=1&amp;amp;currentLonLat=-74.600291,40.360869

        【讨论】:

        • 添加一个零宽度字符可能看起来不错,但可能会搞砸可点击的链接 - 然后您实际上可以将参数“currentLonLat”更改为“%e2%80%8bcurrentLonLat”,其中“e2 %80%8b" 是正确 url 编码的零宽度空格字符。更好的解决方案是正确编码特殊字符,就像在您的链接 /search?query=1&amp;amp;currentLonLat=-74.600291,40.360869 ...如果您查看 HTML 源代码,它将被编码为 /search?query=1&amp;amp;currentLonLat=-74.600291,40.360869,与符号“&”正确转义为“&”。
        猜你喜欢
        • 2014-02-05
        • 2015-05-12
        • 1970-01-01
        • 2017-03-21
        • 2015-07-10
        • 1970-01-01
        • 1970-01-01
        • 2011-09-02
        相关资源
        最近更新 更多