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
3133            * 'email_no_at', 'local_invalid_chars', 'domain_period_sequence', 'domain_period_limits',
3134            * 'domain_no_periods', 'domain_no_valid_subs', or no context.
3135            *
3136            * @since 2.8.0
3137            *
3138            * @param string $email   The sanitized email address.
3139            * @param string $email   The email address, as provided to sanitize_email().
3140            * @param string $message A message to pass to the user.
3141            */
3142           return apply_filters( 'sanitize_email', '', $email, 'email_too_short' );
3143      }
3144
3145      // Test for an @ character after the first position
3146      if ( strpos( $email, '@', 1 ) === false ) {
3147           /** This filter is documented in wp-includes/formatting.php */
3148           return apply_filters( 'sanitize_email', '', $email, 'email_no_at' );
3149      }
3150
3151      // Split out the local and domain parts
3152      list( $local, $domain ) = explode( '@', $email, 2 );
3153
3154      // LOCAL PART
3155      // Test for invalid characters
3156      $local = preg_replace( '/[^a-zA-Z0-9!#$%&\'*+\/=?^_`{|}~\.-]/', '', $local );
3157      if ( '' === $local ) {
3158           /** This filter is documented in wp-includes/formatting.php */
3159           return apply_filters( 'sanitize_email', '', $email, 'local_invalid_chars' );
3160      }
3161
3162      // DOMAIN PART
3163      // Test for sequences of periods
3164      $domain = preg_replace( '/\.{2,}/', '', $domain );
3165      if ( '' === $domain ) {
3166           /** This filter is documented in wp-includes/formatting.php */
3167           return apply_filters( 'sanitize_email', '', $email, 'domain_period_sequence' );
3168      }
3169
3170      // Test for leading and trailing periods and whitespace
3171      $domain = trim( $domain, " \t\n\r\0\x0B." );
3172      if ( '' === $domain ) {
3173           /** This filter is documented in wp-includes/formatting.php */
3174           return apply_filters( 'sanitize_email', '', $email, 'domain_period_limits' );
3175      }
3176
3177      // Split the domain into subs
3178      $subs = explode( '.', $domain );
3179
3180      // Assume the domain will have at least two subs
3181      if ( 2 > count( $subs ) ) {
3182           /** This filter is documented in wp-includes/formatting.php */
3183           return apply_filters( 'sanitize_email', '', $email, 'domain_no_periods' );
3184      }
3185
3186      // Create an array that will contain valid subs
3187      $new_subs = array();
3188
3189      // Loop through each sub
3190      foreach ( $subs as $sub ) {
3191           // Test for leading and trailing hyphens
3192           $sub = trim( $sub, " \t\n\r\0\x0B-" );
 
Line Code
3197           // If there's anything left, add it to the valid subs
3198           if ( '' !== $sub ) {
3199                $new_subs[] = $sub;
3200           }
3201      }
3202
3203      // If there aren't 2 or more valid subs
3204      if ( 2 > count( $new_subs ) ) {
3205           /** This filter is documented in wp-includes/formatting.php */
3206           return apply_filters( 'sanitize_email', '', $email, 'domain_no_valid_subs' );
3207      }
3208
3209      // Join valid subs into the new domain
3210      $domain = join( '.', $new_subs );
3211
3212      // Put the email back together
3213      $email = $local . '@' . $domain;
3214
3215      // Congratulations your email made it!
3216      /** This filter is documented in wp-includes/formatting.php */
3217      return apply_filters( 'sanitize_email', $email, $email, null );
3218 }
3219
3220 /**
3221  * Determines the difference between two timestamps.
3222  *
3223  * The difference is returned in a human readable format such as "1 hour",
3224  * "5 mins", "2 days".
3225  *
3226  * @since 1.5.0