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
2380            * 'domain_no_periods', 'sub_hyphen_limits', 'sub_invalid_chars', or no specific context.
2381            *
2382            * @since 2.8.0
2383            *
2384            * @param bool   $is_email Whether the email address has passed the is_email() checks. Default false.
2385            * @param string $email    The email address being checked.
2386            * @param string $message  An explanatory message to the user.
2387            * @param string $context  Context under which the email was tested.
2388            */
2389           return apply_filters( 'is_email', false, $email, 'email_too_short' );
2390      }
2391
2392      // Test for an @ character after the first position
2393      if ( strpos( $email, '@', 1 ) === false ) {
2394           /** This filter is documented in wp-includes/formatting.php */
2395           return apply_filters( 'is_email', false, $email, 'email_no_at' );
2396      }
2397
2398      // Split out the local and domain parts
2399      list( $local, $domain ) = explode( '@', $email, 2 );
2400
2401      // LOCAL PART
2402      // Test for invalid characters
2403      if ( !preg_match( '/^[a-zA-Z0-9!#$%&\'*+\/=?^_`{|}~\.-]+$/', $local ) ) {
2404           /** This filter is documented in wp-includes/formatting.php */
2405           return apply_filters( 'is_email', false, $email, 'local_invalid_chars' );
2406      }
2407
2408      // DOMAIN PART
2409      // Test for sequences of periods
2410      if ( preg_match( '/\.{2,}/', $domain ) ) {
2411           /** This filter is documented in wp-includes/formatting.php */
2412           return apply_filters( 'is_email', false, $email, 'domain_period_sequence' );
2413      }
2414
2415      // Test for leading and trailing periods and whitespace
2416      if ( trim( $domain, " \t\n\r\0\x0B." ) !== $domain ) {
2417           /** This filter is documented in wp-includes/formatting.php */
2418           return apply_filters( 'is_email', false, $email, 'domain_period_limits' );
2419      }
2420
2421      // Split the domain into subs
2422      $subs = explode( '.', $domain );
2423
2424      // Assume the domain will have at least two subs
2425      if ( 2 > count( $subs ) ) {
2426           /** This filter is documented in wp-includes/formatting.php */
2427           return apply_filters( 'is_email', false, $email, 'domain_no_periods' );
2428      }
2429
2430      // Loop through each sub
2431      foreach ( $subs as $sub ) {
2432           // Test for leading and trailing hyphens and whitespace
2433           if ( trim( $sub, " \t\n\r\0\x0B-" ) !== $sub ) {
2434                /** This filter is documented in wp-includes/formatting.php */
2435                return apply_filters( 'is_email', false, $email, 'sub_hyphen_limits' );
2436           }
2437
2438           // Test for invalid characters
2439           if ( !preg_match('/^[a-z0-9-]+$/i', $sub ) ) {
2440                /** This filter is documented in wp-includes/formatting.php */
2441                return apply_filters( 'is_email', false, $email, 'sub_invalid_chars' );
2442           }
2443      }
2444
2445      // Congratulations your email made it!
2446      /** This filter is documented in wp-includes/formatting.php */
2447      return apply_filters( 'is_email', $email, $email, null );
2448 }
2449
2450 /**
2451  * Convert to ASCII from email subjects.
2452  *
2453  * @since 1.2.0
2454  *
2455  * @param string $string Subject line
2456  * @return string Converted string to ASCII