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
3625            * 'email_no_at', 'local_invalid_chars', 'domain_period_sequence', 'domain_period_limits',
3626            * 'domain_no_periods', 'domain_no_valid_subs', or no context.
3627            *
3628            * @since 2.8.0
3629            *
3630            * @param string $sanitized_email The sanitized email address.
3631            * @param string $email           The email address, as provided to sanitize_email().
3632            * @param string|null $message    A message to pass to the user. null if email is sanitized.
3633            */
3634           return apply_filters( 'sanitize_email', '', $email, 'email_too_short' );
3635      }
3636
3637      // Test for an @ character after the first position.
3638      if ( strpos( $email, '@', 1 ) === false ) {
3639           /** This filter is documented in wp-includes/formatting.php */
3640           return apply_filters( 'sanitize_email', '', $email, 'email_no_at' );
3641      }
3642
3643      // Split out the local and domain parts.
3644      list( $local, $domain ) = explode( '@', $email, 2 );
3645
3646      // LOCAL PART
3647      // Test for invalid characters.
3648      $local = preg_replace( '/[^a-zA-Z0-9!#$%&\'*+\/=?^_`{|}~\.-]/', '', $local );
3649      if ( '' === $local ) {
3650           /** This filter is documented in wp-includes/formatting.php */
3651           return apply_filters( 'sanitize_email', '', $email, 'local_invalid_chars' );
3652      }
3653
3654      // DOMAIN PART
3655      // Test for sequences of periods.
3656      $domain = preg_replace( '/\.{2,}/', '', $domain );
3657      if ( '' === $domain ) {
3658           /** This filter is documented in wp-includes/formatting.php */
3659           return apply_filters( 'sanitize_email', '', $email, 'domain_period_sequence' );
3660      }
3661
3662      // Test for leading and trailing periods and whitespace.
3663      $domain = trim( $domain, " \t\n\r\0\x0B." );
3664      if ( '' === $domain ) {
3665           /** This filter is documented in wp-includes/formatting.php */
3666           return apply_filters( 'sanitize_email', '', $email, 'domain_period_limits' );
3667      }
3668
3669      // Split the domain into subs.
3670      $subs = explode( '.', $domain );
3671
3672      // Assume the domain will have at least two subs.
3673      if ( 2 > count( $subs ) ) {
3674           /** This filter is documented in wp-includes/formatting.php */
3675           return apply_filters( 'sanitize_email', '', $email, 'domain_no_periods' );
3676      }
3677
3678      // Create an array that will contain valid subs.
3679      $new_subs = array();
3680
3681      // Loop through each sub.
3682      foreach ( $subs as $sub ) {
3683           // Test for leading and trailing hyphens.
3684           $sub = trim( $sub, " \t\n\r\0\x0B-" );
 
Line Code
3689           // If there's anything left, add it to the valid subs.
3690           if ( '' !== $sub ) {
3691                $new_subs[] = $sub;
3692           }
3693      }
3694
3695      // If there aren't 2 or more valid subs.
3696      if ( 2 > count( $new_subs ) ) {
3697           /** This filter is documented in wp-includes/formatting.php */
3698           return apply_filters( 'sanitize_email', '', $email, 'domain_no_valid_subs' );
3699      }
3700
3701      // Join valid subs into the new domain.
3702      $domain = implode( '.', $new_subs );
3703
3704      // Put the email back together.
3705      $sanitized_email = $local . '@' . $domain;
3706
3707      // Congratulations, your email made it!
3708      /** This filter is documented in wp-includes/formatting.php */
3709      return apply_filters( 'sanitize_email', $sanitized_email, $email, null );
3710 }
3711
3712 /**
3713  * Determines the difference between two timestamps.
3714  *
3715  * The difference is returned in a human readable format such as "1 hour",
3716  * "5 mins", "2 days".
3717  *
3718  * @since 1.5.0