作者热门文章
- objective-c - iOS 5 : Can you override UIAppearance customisations in specific classes?
- iphone - 如何将 CGFontRef 转换为 UIFont?
- ios - 以编程方式关闭标记的信息窗口 google maps iOS
- ios - Xcode 5 - 尝试验证存档时出现 "No application records were found"
href 属性的内容应该怎么处理:HTML 还是 URL 编码?
<a href="???">link text</a>
一方面,由于 href 属性包含 URL,我应该使用 URL 编码。另一方面,我将此 URL 插入到 HTML 中,因此它必须是 HTML 编码的。
请帮助我克服这个矛盾。
谢谢。
编辑:
这就是矛盾所在。假设 URL 中可能有“<”和“>”字符。 URL 编码不会对它们进行转义,因此 href 属性中会有保留的 HTML 字符,这违反了标准。 HTML 编码会转义 '<' 和 '>' 字符并且 HTML 将有效,但之后 URL 中会出现意外的 '&' 字符(这是 URL 的保留字符,它用作查询字符串参数的分隔符) .
Reserved URL characters形成 reserved HTML characters 的超集除了保留用于 HTML 而不是用于 URL 的“<”和“>”。
编辑 2:
我对“<”和“>”字符的理解是错误的,它们实际上是通过 URL 编码转义的。如果是这样,在这种情况下 URL 编码就足够了,不是吗?
最佳答案
正常构建 URL。遵循构建 URL 的规则。对您放入其中的数据进行编码。
然后像往常一样构建 HTML。遵循构建 HTML 的规则。在将数据放入其中时对其进行编码。
即两者都做(但顺序正确)。
它们并不互斥,因此不存在矛盾。
例如(这是一个假设 $_GET 中的数据正确且存在的简化示例,不要在现实世界中这样做):
$search_term = $_GET['q'];
$page = $_GET['page'];
$next_page = $page + 1;
$next_page_url = 'http://example.com/search?q=' . urlencode($search_term) . '&page=' . urlencode($next_page);
$html = '<a href="' . htmlspecialchars($next_page_url) . '">link text</a>';
关于html - 如何在 HTML 中编码 href 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10189489/
我是一名优秀的程序员,十分优秀!