sanitize_html_class()WP 2.8.0

Подготавливает текст для использования его в html атрибуте class: удаляет все неподходящие символы.

Функция удаляет все октеты и все символы не входящие в значения: A-Z, a-z, 0-9, _, -.
Если в результате получится пустая строка, то функция вернет альтернативный класс, указанный во втором параметре $fallback.

Перед возвращением данных результат прогоняется через фильтр sanitize_html_class.

Обратите внимание, что функция обрабатывает только один класс. Т.е. если передать сразу 2 класса так: foo bar, пробел будет удален и получим: foobar.

1 раз — 0.000024 сек (очень быстро) | 50000 раз — 0.08 сек (скорость света) | PHP 7.1.2, WP 4.7.3
Хуки из функции

Возвращает

Строку.

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

$sanitized = sanitize_html_class( $class, $fallback );
$class(строка) (обязательный)
Строка (название класса) которую нужно очистить.
$fallback(строка)
Значение, которое нужно вернуть, если оригинальное значение после очистки окажется пустой строкой.
По умолчанию: ''

Примеры

0

#1 Демонстрация работы функции

$text = 'Пробный текст';
echo sanitize_html_class( $text ); // '' (пустая строка)

$text = 'Some text';
echo sanitize_html_class( $text ); // Sometext

$text = 'foo bar';
echo sanitize_html_class( $text ); // foobar

$text = 'my-class';
echo sanitize_html_class( $text ); // my-class

$text = 'Пример на английском - Example';
echo sanitize_html_class( $text ); // -Example

Но: Имена классов не должны начинаться с цифр, и эта функция не учитывает этого. Эта функция возвращает строку, начинающуюся с цифр, которые по определению W3 не являются допустимыми именами классов.

$text = '2foo';
echo  sanitize_html_class( $text ); // 2foo

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

С версии 2.8.0 Введена.

Код sanitize_html_class() WP 6.5.2

function sanitize_html_class( $classname, $fallback = '' ) {
	// Strip out any percent-encoded characters.
	$sanitized = preg_replace( '|%[a-fA-F0-9][a-fA-F0-9]|', '', $classname );

	// Limit to A-Z, a-z, 0-9, '_', '-'.
	$sanitized = preg_replace( '/[^A-Za-z0-9_-]/', '', $sanitized );

	if ( '' === $sanitized && $fallback ) {
		return sanitize_html_class( $fallback );
	}
	/**
	 * Filters a sanitized HTML class string.
	 *
	 * @since 2.8.0
	 *
	 * @param string $sanitized The sanitized HTML class.
	 * @param string $classname HTML class before sanitization.
	 * @param string $fallback  The fallback string.
	 */
	return apply_filters( 'sanitize_html_class', $sanitized, $classname, $fallback );
}