sanitize_url()
Очищает указанный 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()
Примеры
#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 );
#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/
#3 Очистка url перед сохранением
Сниппет из кода функции edit_user():
$user = new stdClass(); if ( isset( $_POST['url'] ) ) { $user->user_url = sanitize_url( $_POST['url'] ); } $user_id = wp_insert_user( $user );
#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"
Заметки
- Смотрите: esc_url()
Список изменений
С версии 2.3.1 | Введена. |
С версии 2.8.0 | Deprecated in favor of esc_url_raw(). |
С версии 5.9.0 | Restored (un-deprecated). |
Код sanitize_url() sanitize url WP 6.5.2
function sanitize_url( $url, $protocols = null ) { return esc_url( $url, $protocols, 'db' ); }