# Функция SANITIZE_HTML_CLASS() │ WP 2.8.0
Функция sanitize_html_class() очищает имя класса HTML, чтобы убедиться, что оно содержит только допустимые символы.
Эта функция оставляет только буквы A-Z, a-z, цифры 0-9, знак подчеркивания (_) и дефис (-). Если после очистки результат оказывается пустым, возвращается ал��тернативное значение, которое вы указали.
- Время выполнения: 1 раз — 0.000024 сек (очень быстро) | 50000 раз — 0.08 сек (очень быстро)
- Версия PHP: 7.1.2, WP 4.7.3
## Хуки функции
- sanitize_html_class
## Возврат
Функция возвращает строку — очищенное значение.
## Использование
```php
sanitize_html_class( $classname, $fallback );
- $classname (string, обязательный) — имя класса, которое необходимо очистить.
- $fallback (string) — значение, которое будет возвращено, если результат окажется пустой строкой. По умолчанию: пустая строка.
Примеры
Пример 0
$text = 'Δοκιμαστικό κείμενο';
echo sanitize_html_class( $text ); // '' (пустая строка)
Пример 1
$text = 'Some text';
echo sanitize_html_class( $text ); // Sometext
Пример 2
$text = 'foo bar';
echo sanitize_html_class( $text ); // foobar
Пример 3
$text = 'my-class';
echo sanitize_html_class( $text ); // my-class
Пример 4
$text = 'Δοκι κείμενο - Example';
echo sanitize_html_class( $text ); // -Example
Обратите внимание: имена классов не должны начинаться с цифр, и эта функция не учитывает это. Она может вернуть строку, начинающиюся с цифры, что по определению W3 не является допустимыми именами классов.
$text = '2foo';
echo sanitize_html_class( $text ); // 2foo
Пример 5 — Очищение нескольких HTML классов
Ниже приведена функция, которая принимает массив классов или строку, содержащую классы, разделённые разделителем:
if( ! function_exists( 'sanitize_html_classes' ) ){
function sanitize_html_classes( $classes, $sep = ' ' ) {
$return = '';
if( ! is_array( $classes ) ){
$classes = explode( $sep, $classes );
}
if( $classes ){
foreach( $classes as $class ){
$return .= sanitize_html_class( $class ) . ' ';
}
}
return $return;
}
}
Изменения
Функция была добавлена в версии 2.8.0.
Код функции SANITIZE_HTML_CLASS
function sanitize_html_class( $classname, $fallback = '' ) {
// Убираем любые процентажные символы.
$sanitized = preg_replace( '|%[a-fA-F0-9][a-fA-F0-9]|', '', $classname );
// Ограничиваем допустимые символы: A-Z, a-z, 0-9, '_', '-'.
$sanitized = preg_replace( '/[^A-Za-z0-9_-]/', '', $sanitized );
if ( '' === $sanitized && $fallback ) {
return sanitize_html_class( $fallback );
}
/**
* Фильтрует очищенную строку HTML класса.
*
* @param string $sanitized Очищенный HTML класс.
* @param string $classname HTML класс до очистки.
* @param string $fallback Строка на случай неопределенности.
*/
return apply_filters( 'sanitize_html_class', $sanitized, $classname, $fallback );
}
Связанные функции
SANITIZE_
sanitize_email()sanitize_file_name()sanitize_key()sanitize_meta()sanitize_mime_type()sanitize_option()sanitize_post()sanitize_post_field()sanitize_sql_orderby()sanitize_term()sanitize_term_field()sanitize_text_field()sanitize_textarea_field()sanitize_title()sanitize_title_for_query()sanitize_title_with_dashes()sanitize_url()sanitize_user()wc_clean()wp_check_invalid_utf8()
Очистка и экранирование
esc_attr()esc_html()esc_js()esc_textarea()esc_url()esc_url_raw()tag_escape()validate_file()wp_filter_kses()wp_filter_nohtml_kses()wp_filter_post_kses()wp_kses()wp_kses_data()wp_strip_all_tags()