Функция 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, " tnr x0B." ) !== $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, " tnr x0B-" ) !== $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.