如何让 ¤ 按字面显示,而不是作为 HTML 实体

问题描述 投票:0回答:6

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

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

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

php html url
6个回答
10
投票

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

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

做:

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

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 

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 中显示“¤”的最简洁方法是正确转义 & 符号,并将其呈现为“¤”。


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


0
投票

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

为了解决这个问题,我使用了一个零宽度空格字符,我从这些括号()之间复制并粘贴了该字符。这样看起来就没有空间了,可以毫无问题地包含以下内容:

/search?query=1&currentLonLat=-74.600291,40.360869


0
投票

这个规范页面需要有人说“使用

http_build_query()
”,就像几个路标骗子所演示的那样。

不要手动创建查询字符串。拥有一个正确的原生 PHP 解决方案,可靠地为您编码。

$params = [
    'Id' => 1,
    'report' => 1,
    'currentDimension' => 2,
    'param' => 1,
];

printf(
    'https://example.com/bacon_report?%s',
    http_build_query($params)
);

如果您实际上正在构建 HTML 链接,那么:

$url = 'https://example.com/bacon_report';
$queryString = http_build_query([
    'Id' => 1,
    'report' => 1,
    'currentDimension' => 2,
    'param' => 1,
]);
printf(
    '<a href="%s?%s">%s</a>',
    $url
    $queryString,
    htmlentities("$url?$queryString")
);

更多阅读:

© www.soinside.com 2019 - 2024. All rights reserved.