从Codex entry for Data Validation: URLs:
esc_url( $url, (array) $protocols =
null )
(自2.8起)
清理url(在文本节点、属性节点或其他任何位置)时,始终使用esc\\u url。拒绝没有提供的白名单协议之一的URL(默认为http、https、ftp、ftps、mailto、news、irc、gopher、nntp、feed和telnet),消除无效字符,并删除危险字符。自3.0以来已弃用:clean\\u url()此函数将字符编码为HTML实体:在生成(X)HTML或XML文档时使用此函数。对符号进行编码(&;)和单引号(\')作为数字实体引用(&,')。
esc_url_raw( $url, (array) $protocols
= null )
(自2.8起)
用于在数据库中插入URL。此函数不将字符编码为HTML实体:在存储URL或其他需要非编码URL的情况下使用此函数。通过将$context设置为db,可以在旧的clean\\u url函数中复制此功能。
因此,主要区别似乎是:
esc_url()
对HTML实体进行编码,而esc_url_raw()
没有esc_url()
用于输出,而esc_url_raw()
用于数据库存储编辑:因为您要硬编码(或单独保存/存储)查询字符串中的实际URL,然后通过[add_query_arg()][2]
, 通过esc_js()
, 而不是esc_url()
?
例如:
add_query_arg( esc_js( \'apples\' ), esc_js( \'420\' ), $myurl )