sanitize_url()WP 2.3.1

Очищает указанный URL, чтобы его можно было безопасно использовать при редиректах или хранить в базе данных.

Смотрите также: wp_sanitize_redirect().

Работает на основе: esc_url()
1 раз — 0.0000241 сек (очень быстро) | 50000 раз — 0.12 сек (очень быстро) | PHP 7.4.33, WP 6.2

Хуков нет.

Возвращает

Строку. Очищенный URL (обрабатывается функцией esc_url() с контекстом 'db').

Использование

sanitize_url( $url, $protocols );
$url(строка) (обязательный)
URL, который должен быть очищен.
$protocols(string[])
Массив принимаемых протоколов. См. функцию wp_allowed_protocols().
По умолчанию: return value of wp_allowed_protocols()

Примеры

0

#1 Очистка URL для использования в header()

Упрощённая вырезка из кода функции rest_output_link_header():

$url = get_rest_url();

header( sprintf( 'Link: <%s>; rel="https://api.w.org/"', sanitize_url( $url ) ), false );

/////////////////////

$url= rest_url( rest_get_queried_resource_route() );

header( sprintf( 'Link: <%s>; rel="alternate"; type="application/json"', sanitize_url( $url ) ), false );
0

#2 Пропустить только http/https ссылки

С помощью функции sanitize_url() можно не только очистить url, но и отфильтровать по протоколу:

// Ссылка на ftp ресурс
$url     = 'ftp://ftp.cdrom.com/pub/music/songs/1996';
$new_url = sanitize_url( $url, [ 'http', 'https' ] ); //> пустая строка

// Обычная ссылка на https сайт
$url     = 'https://site.example/projects/';
$new_url = sanitize_url( $url, [ 'http', 'https' ] ); //> https://site.example/projects/
0

#3 Очистка url перед сохранением

Сниппет из кода функции edit_user():

$user = new stdClass();

if ( isset( $_POST['url'] ) ) {
	$user->user_url = sanitize_url( $_POST['url'] );
}

$user_id = wp_insert_user( $user );
0

#4 Пример работы

var_dump( sanitize_url('https://example.com/foo') );       // https://example.com/foo
var_dump( sanitize_url('https://example.com/foo-%2F-M') ); // https://example.com/foo-%2F-M
var_dump( sanitize_url('/foo') );                          // /foo

var_dump( sanitize_url('') ); // string(0) ""
var_dump( sanitize_url(false) ); // string(0) ""
var_dump( sanitize_url(null) ); // string(0) ""
var_dump( sanitize_url(true) ); // string(8) "http://1"

Заметки

Список изменений

С версии 2.3.1 Введена.
С версии 2.8.0 Deprecated in favor of esc_url_raw().
С версии 5.9.0 Restored (un-deprecated).

Код sanitize_url() WP 6.5.2

function sanitize_url( $url, $protocols = null ) {
	return esc_url( $url, $protocols, 'db' );
}