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
2361            * 'email_no_at', 'local_invalid_chars', 'domain_period_sequence', 'domain_period_limits',
2362            * 'domain_no_periods', 'domain_no_valid_subs', or no context.
2363            *
2364            * @since 2.8.0
2365            *
2366            * @param string $email   The sanitized email address.
2367            * @param string $email   The email address, as provided to sanitize_email().
2368            * @param string $message A message to pass to the user.
2369            */
2370           return apply_filters( 'sanitize_email', '', $email, 'email_too_short' );
2371      }
2372
2373      // Test for an @ character after the first position
2374      if ( strpos( $email, '@', 1 ) === false ) {
2375           /** This filter is documented in wp-includes/formatting.php */
2376           return apply_filters( 'sanitize_email', '', $email, 'email_no_at' );
2377      }
2378
2379      // Split out the local and domain parts
2380      list( $local, $domain ) = explode( '@', $email, 2 );
2381
2382      // LOCAL PART
2383      // Test for invalid characters
2384      $local = preg_replace( '/[^a-zA-Z0-9!#$%&\'*+\/=?^_`{|}~\.-]/', '', $local );
2385      if ( '' === $local ) {
2386           /** This filter is documented in wp-includes/formatting.php */
2387           return apply_filters( 'sanitize_email', '', $email, 'local_invalid_chars' );
2388      }
2389
2390      // DOMAIN PART
2391      // Test for sequences of periods
2392      $domain = preg_replace( '/\.{2,}/', '', $domain );
2393      if ( '' === $domain ) {
2394           /** This filter is documented in wp-includes/formatting.php */
2395           return apply_filters( 'sanitize_email', '', $email, 'domain_period_sequence' );
2396      }
2397
2398      // Test for leading and trailing periods and whitespace
2399      $domain = trim( $domain, " \t\n\r\0\x0B." );
2400      if ( '' === $domain ) {
2401           /** This filter is documented in wp-includes/formatting.php */
2402           return apply_filters( 'sanitize_email', '', $email, 'domain_period_limits' );
2403      }
2404
2405      // Split the domain into subs
2406      $subs = explode( '.', $domain );
2407
2408      // Assume the domain will have at least two subs
2409      if ( 2 > count( $subs ) ) {
2410           /** This filter is documented in wp-includes/formatting.php */
2411           return apply_filters( 'sanitize_email', '', $email, 'domain_no_periods' );
2412      }
2413
2414      // Create an array that will contain valid subs
2415      $new_subs = array();
2416
2417      // Loop through each sub
2418      foreach ( $subs as $sub ) {
2419           // Test for leading and trailing hyphens
2420           $sub = trim( $sub, " \t\n\r\0\x0B-" );
 
Line Code
2425           // If there's anything left, add it to the valid subs
2426           if ( '' !== $sub ) {
2427                $new_subs[] = $sub;
2428           }
2429      }
2430
2431      // If there aren't 2 or more valid subs
2432      if ( 2 > count( $new_subs ) ) {
2433           /** This filter is documented in wp-includes/formatting.php */
2434           return apply_filters( 'sanitize_email', '', $email, 'domain_no_valid_subs' );
2435      }
2436
2437      // Join valid subs into the new domain
2438      $domain = join( '.', $new_subs );
2439
2440      // Put the email back together
2441      $email = $local . '@' . $domain;
2442
2443      // Congratulations your email made it!
2444      /** This filter is documented in wp-includes/formatting.php */
2445      return apply_filters( 'sanitize_email', $email, $email, null );
2446 }
2447
2448 /**
2449  * Determines the difference between two timestamps.
2450  *
2451  * The difference is returned in a human readable format such as "1 hour",
2452  * "5 mins", "2 days".
2453  *
2454  * @since 1.5.0