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