Jie*_*eng 17 html php url urlencode html-entities
我一直对URL/HTML编码/转义感到困惑.我正在使用PHP,所以想清楚一些事情.
我可以说我应该经常使用
urlencode:用于单个查询字符串部分
$url = 'http://test.com?param1=' . urlencode('some data') . '¶m2=' . urlencode('something else');
Run Code Online (Sandbox Code Playgroud)htmlentities:用于转义特殊字符,<>以便浏览器正确呈现
是否还有其他地方可以使用每个功能.我不擅长所有这些逃避的东西,总是被他们困惑
irc*_*ell 31
首先,你不应该使用htmlentites大约99%的时间.相反,您应该使用htmlspecialchars()转义文本以在xml/html文档中使用. htmlentities仅用于显示您正在使用的本机字符集无法显示的字符(如果您的页面是ASCII格式,但您想要显示一些UTF-8字符,则它非常有用).相反,只需将整个页面设为UTF-8(并不难),并完成它.
至于urlencode你,你的头上钉了一针.
所以,回顾一下:
内部HTML:
<b><?php echo htmlspecialchars($string, ENT_QUOTES, "UTF-8"); ?></b>
Run Code Online (Sandbox Code Playgroud)在网址内:
$url = '?foo='.urlencode('bar');
Run Code Online (Sandbox Code Playgroud)tro*_*skn 18
那是对的.虽然 - htmlspecialchars很好,只要你直接得到你的charsets.无论如何你应该做什么.所以我倾向于使用它,所以如果我搞砸了,我会及早发现.
还要注意的是,如果你把一个URL到HTML中的上下文(比方说-在href一个的a-标签),你需要逃脱.所以你经常会看到类似的东西:
echo "<a href='" . htmlspecialchars("?foo=".urlencode($foo)) . "'>clicky</a>"
Run Code Online (Sandbox Code Playgroud)