sanitize_locale_name()WP 6.2.1

Удаляет все символы, недопустимые в названии локали.

Удаляет из строки всё, кроме: A-Z, a-z, 0-9, _ и -.

Функция похожа на sanitize_key(), но не изменяет регистр (заглавные буквы остаются как есть).

Хуки из функции

Возвращает

Строку. Очищенная строка.

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

sanitize_locale_name( $locale_name );
$locale_name(строка) (обязательный)
Строка, которая будет использоваться как название локали.

Примеры

0

#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 (правильное имя локали)
0

#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() WP 6.5.2

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 );
}