is_email( string $email, bool $deprecated = false )
Verifies that an email is valid.
Description Description
Does not grok i18n domains. Not RFC compliant.
Parameters Parameters
-
(string) (Required) Email address to verify.
- $deprecated
-
(bool) (Optional) Deprecated.
Default value: false
Return Return
(string|bool) Either false or the valid email address.
Source Source
File: wp-includes/formatting.php
3257 3258 3259 3260 3261 3262 3263 3264 3265 3266 3267 3268 3269 3270 3271 3272 3273 3274 3275 3276 3277 3278 3279 3280 3281 3282 3283 3284 3285 3286 3287 3288 3289 3290 3291 3292 3293 3294 3295 3296 3297 3298 3299 3300 3301 3302 3303 3304 3305 3306 3307 3308 3309 3310 3311 3312 3313 3314 3315 3316 3317 3318 3319 3320 3321 3322 3323 3324 3325 3326 3327 3328 3329 3330 3331 3332 3333 3334 3335 3336 | function is_email( $email , $deprecated = false ) { if ( ! empty ( $deprecated ) ) { _deprecated_argument( __FUNCTION__ , '3.0.0' ); } // Test for the minimum length the email can be if ( strlen ( $email ) < 6 ) { /** * Filters whether an email address is valid. * * This filter is evaluated under several different contexts, such as 'email_too_short', * 'email_no_at', 'local_invalid_chars', 'domain_period_sequence', 'domain_period_limits', * 'domain_no_periods', 'sub_hyphen_limits', 'sub_invalid_chars', or no specific context. * * @since 2.8.0 * * @param bool $is_email Whether the email address has passed the is_email() checks. Default false. * @param string $email The email address being checked. * @param string $context Context under which the email was tested. */ return apply_filters( 'is_email' , false, $email , 'email_too_short' ); } // Test for an @ character after the first position if ( strpos ( $email , '@' , 1 ) === false ) { /** This filter is documented in wp-includes/formatting.php */ return apply_filters( 'is_email' , false, $email , 'email_no_at' ); } // Split out the local and domain parts list( $local , $domain ) = explode ( '@' , $email , 2 ); // LOCAL PART // Test for invalid characters if ( ! preg_match( '/^[a-zA-Z0-9!#$%&\'*+\/=?^_`{|}~\.-]+$/' , $local ) ) { /** This filter is documented in wp-includes/formatting.php */ return apply_filters( 'is_email' , false, $email , 'local_invalid_chars' ); } // DOMAIN PART // Test for sequences of periods if ( preg_match( '/\.{2,}/' , $domain ) ) { /** This filter is documented in wp-includes/formatting.php */ return apply_filters( 'is_email' , false, $email , 'domain_period_sequence' ); } // Test for leading and trailing periods and whitespace if ( trim( $domain , " \t\n\r\0\x0B." ) !== $domain ) { /** This filter is documented in wp-includes/formatting.php */ return apply_filters( 'is_email' , false, $email , 'domain_period_limits' ); } // Split the domain into subs $subs = explode ( '.' , $domain ); // Assume the domain will have at least two subs if ( 2 > count ( $subs ) ) { /** This filter is documented in wp-includes/formatting.php */ return apply_filters( 'is_email' , false, $email , 'domain_no_periods' ); } // Loop through each sub foreach ( $subs as $sub ) { // Test for leading and trailing hyphens and whitespace if ( trim( $sub , " \t\n\r\0\x0B-" ) !== $sub ) { /** This filter is documented in wp-includes/formatting.php */ return apply_filters( 'is_email' , false, $email , 'sub_hyphen_limits' ); } // Test for invalid characters if ( ! preg_match( '/^[a-z0-9-]+$/i' , $sub ) ) { /** This filter is documented in wp-includes/formatting.php */ return apply_filters( 'is_email' , false, $email , 'sub_invalid_chars' ); } } // Congratulations your email made it! /** This filter is documented in wp-includes/formatting.php */ return apply_filters( 'is_email' , $email , $email , null ); } |
Expand full source code Collapse full source code View on Trac
Changelog Changelog
Version | Description |
---|---|
0.71 | Introduced. |
User Contributed Notes User Contributed Notes
You must log in before being able to contribute a note or feedback.
Example
if
( is_email(
'email@domain.com'
) ) {
echo
'email address is valid.'
;
}