html - 在我的网站中呈现 URL 时如何避免双重 URL 编码?

标签 html urlencode html-rendering

用户在文本输入中向我的网站提供了正确转义的 URL 和原始 URL;例如,我认为这两个 URL 是等价的:

https://www.cool.com/cool%20beans
https://www.cool.com/cool beans

现在我想将它们呈现为 <a>稍后在查看此数据时标记。我被困在对给定文本进行编码和获取这些链接之间:

<a href="https://www.cool.com/cool%2520beans">   <!-- This one is broken! -->
<a href="https://www.cool.com/cool%20beans">

或者不编码并得到这个:

<a href="https://www.cool.com/cool%20beans">
<a href="https://www.cool.com/cool beans">       <!-- This one is broken! -->

从用户体验的角度来看,现代浏览器的最佳出路是什么?我在对他们的输入进行解码传递或我上面列出的第二个选项之间左右为难,我们不对 href 进行编码。属性。

最佳答案

如果你想避免对链接进行双重编码,你可以在两个链接上使用 urldecode(),然后在之后使用 urlencode(),解码 URL,例如“https://www.cool.com/cool beans”将返回相同的值,而解码“https://www.cool.com/cool%20beans”将返回空格。这使得两个链接都可以自由地进行正确编码。

或者,可以使用 strpos() 函数扫描编码字符,例如

if ($pos = strpos($url, "%20") {
    //Encoded character found
}

理想情况下,将扫描一组常见的编码字符,代替“%20”

关于html - 在我的网站中呈现 URL 时如何避免双重 URL 编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16094265/

相关文章:

javascript - 什么是 'this' 作为 JavaScript 函数中的参数

html - 我的输入字段在 IE 上以内联方式呈现,但在 Chrome 和 Firefox 中以新行呈现。我该如何解决?

javascript - 客户端 HTML MVC 渲染与通过 NodeJS 的服务器端渲染

Javascript - 从选择中附加选择列表

javascript - Div 内的文本字段

javascript - 未注册的 HTML 自定义元素和已注册的 HTML 自定义元素有什么区别?

php - url 编码的正斜杠破坏了我的 codeigniter 应用程序

java - 如何编码链接 http 包含字符串 "|"

xml - RSS 中的 URL 编码链接会破坏链接

javascript - 仅在模板生成的 html 列表中单击的项目的 Jquery 切换(可见/不可见)