Очистка имени пользователя с помощью функции sanitize_user()

# Функция sanitize_user() │ WP 2.0.0

Функция sanitize_user() предназначена для очистки имени пользователя, удаляя небезопасные символы.

## Описание

Функция удаляет теги, символы в формате percent-encoding (например, %20 вместо пробела), HTML-сущности, а если включен строгий режим, то оставляет только буквы и цифры, а также символы _, пробелы, ., - и @. После очистки имя пользователя передается в фильтр sanitize_user, который позволяет дополнительно обработать его.

### Используется в

- validate_username()

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

- sanitize_user

## Возвращает

Функцию возвращает строку — очищенное имя пользователя после фильтров.

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

```php
sanitize_user( $username, $strict );
  • $username (string, обязательный) — имя пользователя, которое нужно очистить.
  • $strict (true|false) — если установлено в true, ограничивает использование символов в $username. По умолчанию: false.

Примеры

Пример 1: Как работает фильтрация имени пользователя

$string = '     Leonid-{?}[]rus_yo`@';

echo sanitize_user( $string ); // Вывод: Leonid-rus_yo@
echo sanitize_user( $string, true ); // Вывод: Leonid_rus_yo@

Изменения

  • С версии 2.0.0 — Функция была введена.

Код функции sanitize_user() │ WP 6.7.2

Функция находится в файле wp-includes/formatting.php.

function sanitize_user( $username, $strict = false ) {
    $raw_username = $username;
    $username     = wp_strip_all_tags( $username );
    $username     = remove_accents( $username );

    // Удаление символов в формате percent-encoding
    $username = preg_replace( '|%([a-fA-F0-9][a-fA-F0-9])|', '', $username );

    // Удаление HTML-сущностей
    $username = preg_replace( '/&.+?;/', '', $username );

    // Если установлен строгий режим, оставить только ASCII символы
    if ( $strict ) {
        $username = preg_replace( '|[^a-z0-9 _.-@]|i', '', $username );
    }

    $username = trim( $username );
    // Удаляем лишние пробелы
    $username = preg_replace( '|s+|', ' ', $username );

    /**
     * Фильтрует строку с очищенным именем пользователя.
     *
     * @since 2.0.1
     *
     * @param string $username     Очищенное имя пользователя.
     * @param string $raw_username Имя пользователя перед очисткой.
     * @param bool   $strict       Указывает, нужно ли ограничивать очистку определёнными символами.
     */
    return apply_filters( 'sanitize_user', $username, $raw_username, $strict );
}

Похожие функции

  • sanitize_email()
  • sanitize_file_name()
  • sanitize_html_class()
  • 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()
  • wc_clean()
  • wp_check_invalid_utf8()

Другие функции

  • auth_redirect()
  • count_many_users_posts()
  • count_user_posts()
  • count_users()
  • email_exists()
  • get_author_posts_url()
  • get_current_user_id()
  • get_edit_user_link()
  • get_editable_roles()
  • get_the_author()
  • get_the_author_link()
  • get_the_author_posts_link()
  • get_the_modified_author()
  • get_user_by()
  • get_userdata()
  • get_users()
  • is_multi_author()
  • the_author_link()
  • the_author_posts()
  • the_author_posts_link()
  • the_modified_author()
  • username_exists()
  • validate_username()
  • wp_dropdown_roles()
  • wp_dropdown_users()
  • wp_get_current_user()
  • wp_list_authors()
  • wp_list_users()
  • wp_send_new_user_notifications()
  • wp_set_current_user()

Leave a Reply

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