问题描述

我读过专业 WordPress,它说:

esc_html function is used for scrubbing data that contains HTML. This function encodes special characters into their HTML entities

esc_attr function is used for escaping HTML attributes

esc_url. This function should be used to scrub the URL for illegal characters. Even though the href is technically an HTML attribute

这些有什么区别?

如果我有

<script>alert('hello world!');</script>this is some content

将所有< > 转换为&lt; &gt;?网址会像%xxx 那样吗?

最佳解决方案

esc_htmlesc_attr 是 near-identical,唯一的区别是输出通过不同命名的过滤器 (分别为 esc_htmlattribute_escape) 。

esc_url 更复杂和更具体,它处理不能在 URL 和允许的协议中的字符 (列表可以作为第二个参数传递) 。如果它不存在,它也将使用 http://协议来预置输入 (并且链接不是相对的) 。

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。