sanitize_locale_name()
Удаляет все символы, недопустимые в названии локали.
Удаляет из строки всё, кроме: A-Z
, a-z
, 0-9
, _
и -
.
Функция похожа на sanitize_key(), но не изменяет регистр (заглавные буквы остаются как есть).
Хуки из функции
Возвращает
Строку
. Очищенная строка.
Использование
sanitize_locale_name( $locale_name );
- $locale_name(строка) (обязательный)
- Строка, которая будет использоваться как название локали.
Примеры
#1 Разница между функциями sanitize_key() и sanitize_locale_name()
Функция sanitize_key() сначала приводит строку к нижнему регистру и затем уже проводит очистку, поэтому используемые в именах локалей заглавные буквы "теряются".
$str = 'en_CA'; // strtolower() + очистка '/[^a-z0-9_\-]/' echo sanitize_key( $str ); //> en_ca ("поломанное" имя локали) // Только очистка '/[^A-Za-z0-9_-]/' echo sanitize_locale_name( $str ); //> en_CA (правильное имя локали)
#2 Пример получения локали через $_GET/$_COOKIE и её очистки
Часть кода функции determine_locale().
$wp_lang = ''; if ( ! empty( $_GET['wp_lang'] ) ) { $wp_lang = sanitize_locale_name( wp_unslash( $_GET['wp_lang'] ) ); } elseif ( ! empty( $_COOKIE['wp_lang'] ) ) { $wp_lang = sanitize_locale_name( wp_unslash( $_COOKIE['wp_lang'] ) ); }
Список изменений
С версии 6.2.1 | Введена. |
Код sanitize_locale_name() sanitize locale name WP 6.6.1
function sanitize_locale_name( $locale_name ) { // Limit to A-Z, a-z, 0-9, '_', '-'. $sanitized = preg_replace( '/[^A-Za-z0-9_-]/', '', $locale_name ); /** * Filters a sanitized locale name string. * * @since 6.2.1 * * @param string $sanitized The sanitized locale name. * @param string $locale_name The locale name before sanitization. */ return apply_filters( 'sanitize_locale_name', $sanitized, $locale_name ); }