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