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