Menu Adam R Brown

WP hooks navigation: Home/browseActions indexFilters index

Source View: is_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 9 times in this file.

Line Code
3550            * 'email_no_at', 'local_invalid_chars', 'domain_period_sequence', 'domain_period_limits',
3551            * 'domain_no_periods', 'sub_hyphen_limits', 'sub_invalid_chars', or no specific context.
3552            *
3553            * @since 2.8.0
3554            *
3555            * @param string|false $is_email The email address if successfully passed the is_email() checks, false otherwise.
3556            * @param string       $email    The email address being checked.
3557            * @param string       $context  Context under which the email was tested.
3558            */
3559           return apply_filters( 'is_email', false, $email, 'email_too_short' );
3560      }
3561
3562      // Test for an @ character after the first position.
3563      if ( strpos( $email, '@', 1 ) === false ) {
3564           /** This filter is documented in wp-includes/formatting.php */
3565           return apply_filters( 'is_email', false, $email, 'email_no_at' );
3566      }
3567
3568      // Split out the local and domain parts.
3569      list( $local, $domain ) = explode( '@', $email, 2 );
3570
3571      /*
3572       * LOCAL PART
3573       * Test for invalid characters.
3574       */
3575      if ( ! preg_match( '/^[a-zA-Z0-9!#$%&\'*+\/=?^_`{|}~\.-]+$/', $local ) ) {
3576           /** This filter is documented in wp-includes/formatting.php */
3577           return apply_filters( 'is_email', false, $email, 'local_invalid_chars' );
3578      }
3579
3580      /*
3581       * DOMAIN PART
3582       * Test for sequences of periods.
3583       */
3584      if ( preg_match( '/\.{2,}/', $domain ) ) {
3585           /** This filter is documented in wp-includes/formatting.php */
3586           return apply_filters( 'is_email', false, $email, 'domain_period_sequence' );
3587      }
3588
3589      // Test for leading and trailing periods and whitespace.
3590      if ( trim( $domain, " \t\n\r\0\x0B." ) !== $domain ) {
3591           /** This filter is documented in wp-includes/formatting.php */
3592           return apply_filters( 'is_email', false, $email, 'domain_period_limits' );
3593      }
3594
3595      // Split the domain into subs.
3596      $subs = explode( '.', $domain );
3597
3598      // Assume the domain will have at least two subs.
3599      if ( 2 > count( $subs ) ) {
3600           /** This filter is documented in wp-includes/formatting.php */
3601           return apply_filters( 'is_email', false, $email, 'domain_no_periods' );
3602      }
3603
3604      // Loop through each sub.
3605      foreach ( $subs as $sub ) {
3606           // Test for leading and trailing hyphens and whitespace.
3607           if ( trim( $sub, " \t\n\r\0\x0B-" ) !== $sub ) {
3608                /** This filter is documented in wp-includes/formatting.php */
3609                return apply_filters( 'is_email', false, $email, 'sub_hyphen_limits' );
3610           }
3611
3612           // Test for invalid characters.
3613           if ( ! preg_match( '/^[a-z0-9-]+$/i', $sub ) ) {
3614                /** This filter is documented in wp-includes/formatting.php */
3615                return apply_filters( 'is_email', false, $email, 'sub_invalid_chars' );
3616           }
3617      }
3618
3619      // Congratulations, your email made it!
3620      /** This filter is documented in wp-includes/formatting.php */
3621      return apply_filters( 'is_email', $email, $email, null );
3622 }
3623
3624 /**
3625  * Converts to ASCII from email subjects.
3626  *
3627  * @since 1.2.0
3628  *
3629  * @param string $subject Subject line.
3630  * @return string Converted string to ASCII.