Make WordPress Core


Ignore:
Timestamp:
06/10/2026 03:04:54 PM (2 months ago)
Author:
dmsnell
Message:

General: Add support for unicode email addresses in is_email and sanitize_email

This adds support for the unicode address extensions in RFC 6530-3 and refactors the code so there are fewer long regexes and less duplication between sanitize_email and is_email. A new class, WP_Email_Address, provides the shared parts.

Opting out of unicode support is easy, default-filters.php adds unicode support by adding filters, which can be removed.

sanitize_email no longer does major changes like removing an entire subdomain from someone's address, it only cleans up things like soft hyphens and whitespace — changes that happen when coping an email address from text.

Developed in: https://github.com/WordPress/wordpress-develop/pull/5237
Discussed in: https://core.trac.wordpress.org/ticket/31992

Props agulbra, akirk, benniledl, dmsnell, ironprogrammer, justlevine, mdawaffe, mukeshpanchal27, SirLouen, tusharbharti.
Fixes #31992.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tests/phpunit/tests/rest-api/rest-comments-controller.php

    r61282 r62482  
    23222322                        'post'         => self::$post_id,
    23232323                        'author_name'  => 'Bleeding Gums Murphy',
    2324                         'author_email' => 'murphy@' . rand_long_str( 190 ) . '.com',
     2324                        'author_email' => 'murphy@' . rand_long_str( 60 ) . '.' . rand_long_str( 60 ) . '.com',
    23252325                        'author_url'   => 'http://jazz.gingivitis.com',
    23262326                        'content'      => 'This isn\'t a saxophone. It\'s an umbrella.',
     
    29552955
    29562956                $params = array(
    2957                         'author_email' => 'murphy@' . rand_long_str( 190 ) . '.com',
     2957                        'author_email' => 'murphy@' . rand_long_str( 60 ) . '.' . rand_long_str( 60 ) . '.com',
    29582958                        'content'      => 'This isn\'t a saxophone. It\'s an umbrella.',
    29592959                );
Note: See TracChangeset for help on using the changeset viewer.