Edit report at http://bugs.php.net/bug.php?id=53395&edit=1

 ID:                 53395
 Comment by:         edanpr at gmail dot com
 Reported by:        edanpr at gmail dot com
 Summary:            FILTER_VALIDATE_EMAIL return false on valid emails
 Status:             Bogus
 Type:               Bug
 Package:            Filter related
 Operating System:   debian
 PHP Version:        5.3.3
 Block user comment: N
 Private report:     N

 New Comment:

I think it's very easy to answer this question. Filter according to 

real-world cases, otherwise, you are making this function useless.



People expect to use this function to validate email, if this function
return false on valid emails, we got a problem and this function becomes
useless.



I already had to add a secondary check in my email validation function
to support multiple dashes domains.


Previous Comments:
------------------------------------------------------------------------
[2010-11-25 06:41:31] [email protected]

This comes back to whether we filter according to spec or we filter
according to 

real-world cases that go against the spec.  The problem with the latter
is that it 

is not a finite problem.  If we go by the spec we can simply follow the
spec and 

we are done.  But yes, you are right, there are domains out there that
are not 

legal according to the RFCs but have still been issued for whatever
reason.  2 

hyphens is definitely not valid in non-IDN domain names.

------------------------------------------------------------------------
[2010-11-25 04:39:27] edanpr at gmail dot com

Ok, 2 dots is wrong, but double dash is still a valid domain which means
users can have email there.



a--b.com - real domain

h--t.com - real domain

------------------------------------------------------------------------
[2010-11-25 04:06:44] [email protected]

filter_var() is right in both cases here: domain names can only

include consecutive hyphens when being used for internationalised

domains (which implies that the name is of the form xn--XXX), and the

local part of an e-mail address can't include consecutive dots, per

the grammar in RFC 5322.

------------------------------------------------------------------------
[2010-11-24 12:58:10] edanpr at gmail dot com

Description:
------------
In php 5.3.3 using filter_var to validate email (FILTER_VALIDATE_EMAIL)
that got more than one period (.) or dash (-) results in error while in
5.3.2 it didn't.



[email protected] will return false on 5.3.3 and true on 5.3.2

[email protected] will return false on 5.3.3 and true on 5.3.2

Test script:
---------------
<?

$adr1 = '[email protected]';

$adr2 = '[email protected]';

var_dump(filter_var($adr1, FILTER_VALIDATE_EMAIL));

var_dump(filter_var($adr2, FILTER_VALIDATE_EMAIL));



Expected result:
----------------
string(15) "[email protected]"

string(13) "[email protected]"



Actual result:
--------------
bool(false)

bool(false)




------------------------------------------------------------------------



-- 
Edit this bug report at http://bugs.php.net/bug.php?id=53395&edit=1

Reply via email to