egulias / EmailValidator

PHP Email address validator
MIT License
11.45k stars 210 forks source link

Trailing non-breaking space is valid? #358

Open dmaicher opened 1 year ago

dmaicher commented 1 year ago

First of all thanks for maintaining this nice library :+1:

I'm using it on my Symfony app in strict mode (which uses NoRFCWarningsValidation).

I noticed from time to time my postfix service on prod has some issues with email addresses that passed the validation. In those cases I have trailing non-breaking spaces.

I'm not that familiar with all the RFC specs out there around email address syntax :yum:

So I'm wondering: should those be valid? :thinking:

Reproducer:


<?php

require_once 'vendor/autoload.php';

use Egulias\EmailValidator\EmailValidator;
use Egulias\EmailValidator\Validation\NoRFCWarningsValidation;

$validator = new EmailValidator();

var_dump($validator->isValid('some@email.com'.mb_chr(0xA0), new NoRFCWarningsValidation())); //true

var_dump($validator->isValid('some@email.com ', new NoRFCWarningsValidation())); // false
egulias commented 1 year ago

Hi @dmaicher I'll look into it, seem to have to do with how mb_chr(0xA0) is interpreted, since a "normal" space is being handled correctly (returns false, per your example). Meanwhile, a simple sanitation using trim should do the trick to remove those cases.