Menu Adam R Brown

WP hooks navigation: Home/browseActions indexFilters index

Source View: sanitize_email

To save our bandwidth, we show only a snippet of code around each occurence of the hook. View complete file in SVN (without highlighting).

Understanding Source Code

The best way to understand what a hook does is to look at where it occurs in the source code.

Remember, this hook may occur in more than one file. Moreover, the hook's context may change from version to version.

Source View

This hook occurs 8 times in this file.

Line Code
3595            * 'email_no_at', 'local_invalid_chars', 'domain_period_sequence', 'domain_period_limits',
3596            * 'domain_no_periods', 'domain_no_valid_subs', or no context.
3597            *
3598            * @since 2.8.0
3599            *
3600            * @param string $sanitized_email The sanitized email address.
3601            * @param string $email           The email address, as provided to sanitize_email().
3602            * @param string|null $message    A message to pass to the user. null if email is sanitized.
3603            */
3604           return apply_filters( 'sanitize_email', '', $email, 'email_too_short' );
3605      }
3606
3607      // Test for an @ character after the first position
3608      if ( strpos( $email, '@', 1 ) === false ) {
3609           /** This filter is documented in wp-includes/formatting.php */
3610           return apply_filters( 'sanitize_email', '', $email, 'email_no_at' );
3611      }
3612
3613      // Split out the local and domain parts
3614      list( $local, $domain ) = explode( '@', $email, 2 );
3615
3616      // LOCAL PART
3617      // Test for invalid characters
3618      $local = preg_replace( '/[^a-zA-Z0-9!#$%&\'*+\/=?^_`{|}~\.-]/', '', $local );
3619      if ( '' === $local ) {
3620           /** This filter is documented in wp-includes/formatting.php */
3621           return apply_filters( 'sanitize_email', '', $email, 'local_invalid_chars' );
3622      }
3623
3624      // DOMAIN PART
3625      // Test for sequences of periods
3626      $domain = preg_replace( '/\.{2,}/', '', $domain );
3627      if ( '' === $domain ) {
3628           /** This filter is documented in wp-includes/formatting.php */
3629           return apply_filters( 'sanitize_email', '', $email, 'domain_period_sequence' );
3630      }
3631
3632      // Test for leading and trailing periods and whitespace
3633      $domain = trim( $domain, " \t\n\r\0\x0B." );
3634      if ( '' === $domain ) {
3635           /** This filter is documented in wp-includes/formatting.php */
3636           return apply_filters( 'sanitize_email', '', $email, 'domain_period_limits' );
3637      }
3638
3639      // Split the domain into subs
3640      $subs = explode( '.', $domain );
3641
3642      // Assume the domain will have at least two subs
3643      if ( 2 > count( $subs ) ) {
3644           /** This filter is documented in wp-includes/formatting.php */
3645           return apply_filters( 'sanitize_email', '', $email, 'domain_no_periods' );
3646      }
3647
3648      // Create an array that will contain valid subs
3649      $new_subs = array();
3650
3651      // Loop through each sub
3652      foreach ( $subs as $sub ) {
3653           // Test for leading and trailing hyphens
3654           $sub = trim( $sub, " \t\n\r\0\x0B-" );
 
Line Code
3659           // If there's anything left, add it to the valid subs
3660           if ( '' !== $sub ) {
3661                $new_subs[] = $sub;
3662           }
3663      }
3664
3665      // If there aren't 2 or more valid subs
3666      if ( 2 > count( $new_subs ) ) {
3667           /** This filter is documented in wp-includes/formatting.php */
3668           return apply_filters( 'sanitize_email', '', $email, 'domain_no_valid_subs' );
3669      }
3670
3671      // Join valid subs into the new domain
3672      $domain = join( '.', $new_subs );
3673
3674      // Put the email back together
3675      $sanitized_email = $local . '@' . $domain;
3676
3677      // Congratulations your email made it!
3678      /** This filter is documented in wp-includes/formatting.php */
3679      return apply_filters( 'sanitize_email', $sanitized_email, $email, null );
3680 }
3681
3682 /**
3683  * Determines the difference between two timestamps.
3684  *
3685  * The difference is returned in a human readable format such as "1 hour",
3686  * "5 mins", "2 days".
3687  *
3688  * @since 1.5.0