我一直对 URL/HTML 编码/转义感到困惑。我正在使用 PHP,所以我想弄清楚一些事情。
我可以说我应该一直使用
urlencode
:用于单个查询字符串部分
$url = 'http://test.com?param1=' . urlencode('some data') . '¶m2=' . urlencode('something else');
htmlentities
:用于转义特殊字符,如<>
以便浏览器正确呈现
还有其他地方我可以使用每个功能吗?我不擅长所有这些逃避的东西,而且总是被它们弄糊涂。
原文由 Jiew Meng 发布,翻译遵循 CC BY-SA 4.0 许可协议
首先,你不应该在 99% 左右的时间里使用 htmlentities() 。相反,您应该使用 htmlspecialchars() 来转义文本,以便在 XML 和 HTML 文档中使用。
htmlentities
仅对显示您使用的本机字符集无法显示的字符有用(如果您的页面是 ASCII,但您有一些 UTF-8 字符想要显示,则它很有用).相反,只需将整个页面设为 UTF-8(这并不难),然后就可以了。就 urlencode() 而言,您一针见血。
所以,回顾一下: