Definition:
function is_email( $email, $deprecated = false ) {}
Verifies that an email is valid.
Does not grok i18n domains. Not RFC compliant.
Parameters
- string $email: Email address to verify.
- boolean $deprecated: Deprecated.
Return values
returns:Either false or the valid email address.
Defined filters
- is_email
apply_filters( 'is_email', false, $email, 'email_too_short' )
- is_email
apply_filters( 'is_email', false, $email, 'email_no_at' )
- is_email
apply_filters( 'is_email', false, $email, 'local_invalid_chars' )
- is_email
apply_filters( 'is_email', false, $email, 'domain_period_sequence' )
- is_email
apply_filters( 'is_email', false, $email, 'domain_period_limits' )
- is_email
apply_filters( 'is_email', false, $email, 'domain_no_periods' )
- is_email
apply_filters( 'is_email', false, $email, 'sub_hyphen_limits' )
- is_email
apply_filters( 'is_email', false, $email, 'sub_invalid_chars' )
- is_email
apply_filters( 'is_email', $email, $email, null )
Source code
function is_email( $email, $deprecated = false ) { if ( ! empty( $deprecated ) ) _deprecated_argument( __FUNCTION__, '3.0' ); // Test for the minimum length the email can be if ( strlen( $email ) < 3 ) { return apply_filters( 'is_email', false, $email, 'email_too_short' ); } // Test for an @ character after the first position if ( strpos( $email, '@', 1 ) === false ) { 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 ) ) { return apply_filters( 'is_email', false, $email, 'local_invalid_chars' ); } // DOMAIN PART // Test for sequences of periods if ( preg_match( '/\.{2,}/', $domain ) ) { 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 ) { 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 ) ) { 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 ) { return apply_filters( 'is_email', false, $email, 'sub_hyphen_limits' ); } // Test for invalid characters if ( !preg_match('/^[a-z0-9-]+$/i', $sub ) ) { return apply_filters( 'is_email', false, $email, 'sub_invalid_chars' ); } } // Congratulations your email made it! return apply_filters( 'is_email', $email, $email, null ); }
2115
No comments yet... Be the first to leave a reply!