我正在尝试建立自己的函数,以便在将URL保存到WP数据库之前对其进行清理。但是,我无法让esc\\u url\\u raw针对不需要的协议触发。下面的功能是让所有协议通过。
function scientifik_sanitize_url($url){
$prots = array(\'http\', \'https\');
$item = $url;
$sanitized = esc_url_raw( $item, $prots );
if ( is_wp_error( $sanitized ) ) {
return \'funny\';
die();
}
return $item;
};
我提前感谢任何人使用此功能的经验。
最合适的回答,由SO网友:cybmeta 整理而成
您正在执行WP Error object 如果URL的协议无效,但esc_url_raw
在这种情况下返回空字符串(请参阅codex), 不是WP错误对象。所以is_wp_error( $escaped )
从不验证。此外,您正在检查未定义的$escaped
变量(请注意esc_url_raw
存储在$sanitized
变量):
function scientifik_sanitize_url($url){
$prots = array(\'http\', \'https\');
$item = $url;
$escaped = esc_url_raw( $item, $prots );
if ( empty( $escaped ) ) {
return \'funny\';
die();
}
return $item;
};