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/formatting/isEmail.php

    r62249 r62482  
    3838                        'kevin@many.subdomains.make.a.happy.man.edu',
    3939                        'a@b.co',
     40                        'a@b.c',
    4041                        'bill+ted@example.com',
     42                        'info@grå.org',
     43                        'grå@grå.org',
     44                        "gr\u{0061}\u{030a}blå@grå.org",
    4145                        '..@example.com',
    4246                );
     
    7579                        'com.exampleNOSPAMbob',
    7680                        'bob@your mom',
    77                         'a@b.c',
    7881                        '" "@b.c',
    79                         '"@"@b.c',
    80                         'a@route.org@b.c',
    8182                        'h(aj@couc.ou', // bad comment.
    8283                        'hi@',
Note: See TracChangeset for help on using the changeset viewer.