Функция SANITIZE_HTML_CLASS для очистки имени класса HTML

# Функция 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()

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *