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
3764            * 'email_no_at', 'local_invalid_chars', 'domain_period_sequence', 'domain_period_limits',
3765            * 'domain_no_periods', 'domain_no_valid_subs', or no context.
3766            *
3767            * @since 2.8.0
3768            *
3769            * @param string $sanitized_email The sanitized email address.
3770            * @param string $email           The email address, as provided to sanitize_email().
3771            * @param string|null $message    A message to pass to the user. null if email is sanitized.
3772            */
3773           return apply_filters( 'sanitize_email', '', $email, 'email_too_short' );
3774      }
3775
3776      // Test for an @ character after the first position.
3777      if ( strpos( $email, '@', 1 ) === false ) {
3778           /** This filter is documented in wp-includes/formatting.php */
3779           return apply_filters( 'sanitize_email', '', $email, 'email_no_at' );
3780      }
3781
3782      // Split out the local and domain parts.
3783      list( $local, $domain ) = explode( '@', $email, 2 );
3784
3785      /*
3786       * LOCAL PART
3787       * Test for invalid characters.
3788       */
3789      $local = preg_replace( '/[^a-zA-Z0-9!#$%&\'*+\/=?^_`{|}~\.-]/', '', $local );
3790      if ( '' === $local ) {
3791           /** This filter is documented in wp-includes/formatting.php */
3792           return apply_filters( 'sanitize_email', '', $email, 'local_invalid_chars' );
3793      }
3794
3795      /*
3796       * DOMAIN PART
3797       * Test for sequences of periods.
3798       */
3799      $domain = preg_replace( '/\.{2,}/', '', $domain );
3800      if ( '' === $domain ) {
3801           /** This filter is documented in wp-includes/formatting.php */
3802           return apply_filters( 'sanitize_email', '', $email, 'domain_period_sequence' );
3803      }
3804
3805      // Test for leading and trailing periods and whitespace.
3806      $domain = trim( $domain, " \t\n\r\0\x0B." );
3807      if ( '' === $domain ) {
3808           /** This filter is documented in wp-includes/formatting.php */
3809           return apply_filters( 'sanitize_email', '', $email, 'domain_period_limits' );
3810      }
3811
3812      // Split the domain into subs.
3813      $subs = explode( '.', $domain );
3814
3815      // Assume the domain will have at least two subs.
3816      if ( 2 > count( $subs ) ) {
3817           /** This filter is documented in wp-includes/formatting.php */
3818           return apply_filters( 'sanitize_email', '', $email, 'domain_no_periods' );
3819      }
3820
3821      // Create an array that will contain valid subs.
3822      $new_subs = array();
3823
3824      // Loop through each sub.
3825      foreach ( $subs as $sub ) {
3826           // Test for leading and trailing hyphens.
3827           $sub = trim( $sub, " \t\n\r\0\x0B-" );
 
Line Code
3832           // If there's anything left, add it to the valid subs.
3833           if ( '' !== $sub ) {
3834                $new_subs[] = $sub;
3835           }
3836      }
3837
3838      // If there aren't 2 or more valid subs.
3839      if ( 2 > count( $new_subs ) ) {
3840           /** This filter is documented in wp-includes/formatting.php */
3841           return apply_filters( 'sanitize_email', '', $email, 'domain_no_valid_subs' );
3842      }
3843
3844      // Join valid subs into the new domain.
3845      $domain = implode( '.', $new_subs );
3846
3847      // Put the email back together.
3848      $sanitized_email = $local . '@' . $domain;
3849
3850      // Congratulations, your email made it!
3851      /** This filter is documented in wp-includes/formatting.php */
3852      return apply_filters( 'sanitize_email', $sanitized_email, $email, null );
3853 }
3854
3855 /**
3856  * Determines the difference between two timestamps.
3857  *
3858  * The difference is returned in a human-readable format such as "1 hour",
3859  * "5 mins", "2 days".
3860  *
3861  * @since 1.5.0