Definition:
function sanitize_email( $email ) {}
Strips out all characters that are not allowable in an email.
Parameters
- string $email: Email address to filter.
Return values
returns:Filtered email address.
Defined filters
- sanitize_email
apply_filters( 'sanitize_email', '', $email, 'email_too_short' )
- sanitize_email
apply_filters( 'sanitize_email', '', $email, 'email_no_at' )
- sanitize_email
apply_filters( 'sanitize_email', '', $email, 'local_invalid_chars' )
- sanitize_email
apply_filters( 'sanitize_email', '', $email, 'domain_period_sequence' )
- sanitize_email
apply_filters( 'sanitize_email', '', $email, 'domain_period_limits' )
- sanitize_email
apply_filters( 'sanitize_email', '', $email, 'domain_no_periods' )
- sanitize_email
apply_filters( 'sanitize_email', '', $email, 'domain_no_valid_subs' )
- sanitize_email
apply_filters( 'sanitize_email', $email, $email, null )
Source code
function sanitize_email( $email ) { // Test for the minimum length the email can be if ( strlen( $email ) < 3 ) { return apply_filters( 'sanitize_email', '', $email, 'email_too_short' ); } // Test for an @ character after the first position if ( strpos( $email, '@', 1 ) === false ) { return apply_filters( 'sanitize_email', '', $email, 'email_no_at' ); } // Split out the local and domain parts list( $local, $domain ) = explode( '@', $email, 2 ); // LOCAL PART // Test for invalid characters $local = preg_replace( '/[^a-zA-Z0-9!#$%&\'*+\/=?^_`{|}~\.-]/', '', $local ); if ( '' === $local ) { return apply_filters( 'sanitize_email', '', $email, 'local_invalid_chars' ); } // DOMAIN PART // Test for sequences of periods $domain = preg_replace( '/\.{2,}/', '', $domain ); if ( '' === $domain ) { return apply_filters( 'sanitize_email', '', $email, 'domain_period_sequence' ); } // Test for leading and trailing periods and whitespace $domain = trim( $domain, " \t\n\r\0\x0B." ); if ( '' === $domain ) { return apply_filters( 'sanitize_email', '', $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( 'sanitize_email', '', $email, 'domain_no_periods' ); } // Create an array that will contain valid subs $new_subs = array(); // Loop through each sub foreach ( $subs as $sub ) { // Test for leading and trailing hyphens $sub = trim( $sub, " \t\n\r\0\x0B-" ); // Test for invalid characters $sub = preg_replace( '/[^a-z0-9-]+/i', '', $sub ); // If there's anything left, add it to the valid subs if ( '' !== $sub ) { $new_subs[] = $sub; } } // If there aren't 2 or more valid subs if ( 2 > count( $new_subs ) ) { return apply_filters( 'sanitize_email', '', $email, 'domain_no_valid_subs' ); } // Join valid subs into the new domain $domain = join( '.', $new_subs ); // Put the email back together $email = $local . '@' . $domain; // Congratulations your email made it! return apply_filters( 'sanitize_email', $email, $email, null ); }
2769
No comments yet... Be the first to leave a reply!