Функция IS_EMAIL() в WordPress: синтаксис, примеры, изменения

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

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

  • Время выполнения: 1 раз — 0.000105 сек (быстро) | 50000 раз — 0.14 сек (очень быстро).

Возврат значения

Функция возвращает:

  • Строка — валидный адрес электронной почты при успехе.
  • false — если адрес электронной почты недействителен.

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

Синтаксис

is_email( $email, $deprecated );
  • $email (строка) — адрес электронной почты, который необходимо проверить. Это обязательный параметр.
  • $deprecated (bool) — устаревший параметр. Не рекомендуется использовать. Значение по умолчанию: false.

Примеры

Проверка корректности адреса электронной почты

if ( is_email( '[email protected]' ) ) {
    echo 'Адрес электронной почты правильный.';
}

Изменения

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

Код функции

Функция is_email() реализуется в файле wp-includes/formatting.php:

function is_email( $email, $deprecated = false ) {
if ( ! empty( $deprecated ) ) {
_deprecated_argument( FUNCTION, '3.0.0' );
}

// Проверяем минимальную длину адреса электронной почты.
if ( strlen( $email ) < 6 ) {
    return apply_filters( 'is_email', false, $email, 'email_too_short' );
}

// Проверка на наличие симв��ла "@".
if ( strpos( $email, '@', 1 ) === false ) {
    return apply_filters( 'is_email', false, $email, 'email_no_at' );
}

// Разделяем локальную и доменную части.
list( $local, $domain ) = explode( '@', $email, 2 );

// Локальная часть: проверка на недопустимые символы.
if ( ! preg_match( '/^[a-zA-Z0-9!#$%&'*+/=?^_`{|}~.-]+$/', $local ) ) {
    return apply_filters( 'is_email', false, $email, 'local_invalid_chars' );
}

// Доменная часть: проверка на последовательности точек.
if ( preg_match( '/.{2,}/', $domain ) ) {
    return apply_filters( 'is_email', false, $email, 'domain_period_sequence' );
}

// Проверка на наличие ведущих и замыкающих точек и пробелов.
if ( trim( $domain, " tnrx0B." ) !== $domain ) {
    return apply_filters( 'is_email', false, $email, 'domain_period_limits' );
}

// Разделяем домен на поддомены.
$subs = explode( '.', $domain );

// Должно быть как минимум два поддомена.
if ( 2 > count( $subs ) ) {
    return apply_filters( 'is_email', false, $email, 'domain_no_periods' );
}

// Проверяем каждый поддомен.
foreach ( $subs as $sub ) {
    // Проверка на наличие ведущих и замыкающих дефисов и пробелов.
    if ( trim( $sub, " tnrx0B-" ) !== $sub ) {
        return apply_filters( 'is_email', false, $email, 'sub_hyphen_limits' );
    }

    // Проверка на недопустимые символы.
    if ( ! preg_match( '/^[a-z0-9-]+$/i', $sub ) ) {
        return apply_filters( 'is_email', false, $email, 'sub_invalid_chars' );
    }
}

// Если все проверки пройдены, адрес электронной почты действителен.
return apply_filters( 'is_email', $email, $email, null );

}

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

Вот несколько функций, которые могут быть полезны вместе с is_email():

  • rest_is_boolean() — проверяет, является ли значение логическим.
  • validate_file() — проверяет, является ли файл допустимым.
  • wp_http_validate_url() — проверяет, является ли URL допустимым.
  • email_exists() — проверяет, существует ли адрес электронной почты в базе данных.

Эти функции помогут вам в проверке и валидации различных типов данных в WordPress.

Leave a Reply

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