Функция SANITIZE_EMAIL() в WordPress: Примеры использования и производительность

Функция SANITIZE_EMAIL() в WordPress

Функция sanitize_email() позволяет очистить адрес электронной почты, удаляя все недопустимые символы. Это поможет защитить приложение от несанкционированного ввода.

��роизводительность:

  • Один вызов — 0.0002048 секунды (быстро)
  • 50,000 раз — 0.25 секунды (очень быстро)
  • Версия PHP: 7.4.8, Версия WP: 5.6

Что возвращает функция

Функция возвращает строку — очищенный адрес электронной почты.

Как использовать

$email = sanitize_email( $email );

Параметры:

  • $email (строка) — обязательный параметр, это адрес электронной почты, который нужно очистить.

Примеры использования

Пример 1: Очистка адреса электронной почты

$email = "pROverka!#$%&'*+/=?^_`{|}~.---<>©[email protected]/cdn-cgi/l/email-protection";

echo sanitize_email( $email );
// Результат: proverka!#$%&'*+/=?^_`{|}[email protected]/cdn-cgi/l/email-protection

Пример 2: Удаление лишних пробелов

$sanitized_email = sanitize_email('     [email protected]/cdn-cgi/l/email-protection!     ');

echo $sanitized_email; // Вывод: '[email protected]/cdn-cgi/l/email-protection'

Изменения в версии

Функция была введена в версии 1.5.0.

Код функции sanitize_email()

Функция sanitize_email() находится в файле wp-includes/formatting.php и выглядит следующим образом:

function sanitize_email( $email ) {
if ( strlen( $email ) < 6 ) {
return apply_filters( 'sanitize_email', '', $email, 'email_too_short' );
}

if ( strpos( $email, '@', 1 ) === false ) {
    return apply_filters( 'sanitize_email', '', $email, 'email_no_at' );
}

list( $local, $domain ) = explode( '@', $email, 2 );

$local = preg_replace( '/[^a-zA-Z0-9!#$%&'*+/=?^_`{|}~.-]/', '', $local );
if ( '' === $local ) {
    return apply_filters( 'sanitize_email', '', $email, 'local_invalid_chars' );
}

$domain = preg_replace( '/.{2,}/', '', $domain );
if ( '' === $domain ) {
    return apply_filters( 'sanitize_email', '', $email, 'domain_period_sequence' );
}

$domain = trim( $domain, " tnrx0B." );
if ( '' === $domain ) {
    return apply_filters( 'sanitize_email', '', $email, 'domain_period_limits' );
}

$subs = explode( '.', $domain );

if ( 2 > count( $subs ) ) {
    return apply_filters( 'sanitize_email', '', $email, 'domain_no_periods' );
}

$new_subs = array();

foreach ( $subs as $sub ) {
    $sub = trim( $sub, " tnrx0B-" );
    $sub = preg_replace( '/[^a-z0-9-]+/i', '', $sub );

    if ( '' !== $sub ) {
        $new_subs[] = $sub;
    }
}

if ( 2 > count( $new_subs ) ) {
    return apply_filters( 'sanitize_email', '', $email, 'domain_no_valid_subs' );
}

$domain = implode( '.', $new_subs );

$sanitized_email = $local . '@' . $domain;

return apply_filters( 'sanitize_email', $sanitized_email, $email, null );

}

Связанные функции

WordPress предоставляет несколько других функций для очистки, например:

  • sanitize_file_name()
  • sanitize_html_class()
  • sanitize_key()
  • sanitize_url()
  • sanitize_user()

Эти функции помогают поддерживать безопасность вашего сайта, проверяя и очищая входящие данные.

Заключение

Использование sanitize_email() является важной частью работы с пользовательскими данными на вашем сайте WordPress. Она помогает гарантировать, что адреса электронной почты правильные и безопасные.

Leave a Reply

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