用户在文本输入中向我的网站提供了正确转义的 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/