is_email

is_email

Appears in: , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,
Hook Type: filter

See hook in core

Displaying hooks found in version: wordpress-6.7.2

apply_filters('is_email') is found 9 times:

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