Насколько последователен FILTER_VALIDATE_EMAIL?

Пример действительного адреса электронной почты:

"это действительный адрес" @example.com

PHP-код:

<?php
header('Content-Type: text/plain');

$email = '"this is a valid address"@example.com';
$checked = filter_var($email, FILTER_VALIDATE_EMAIL);
var_dump($email, $checked);

Вывод на одном сервере: (PHP Version 5.2.6):

string (37) "это действительный адрес" @example.com"
string (37) "это действительный адрес" @example.com"

phpinfo():

Input Validation and Filtering      enabled
Revision                            $Revision: 1.52.2.42 $

Directive             Local Value   Master Value
filter.default        unsafe_raw    unsafe_raw
filter.default_flags  no value      no value

Вывод на другом сервере (версия PHP 5.3.3):

string (37) "это действительный адрес" @example.com"
BOOL (ложь)

phpinfo():

Input Validation and Filtering      enabled
Revision                            $Revision: 298196 $

Directive             Local Value   Master Value
filter.default        unsafe_raw    unsafe_raw
filter.default_flags  no value      no value

Я ничего не вижу в документации, чтобы предположить, что это изменилось, поэтому, возможно, это другой параметр конфигурации.

Ответы

Ответ 1

Как вы можете видеть на http://3v4l.org/vKONS использование фильтра FILTER_VALIDATE_EMAIL несовместимо!

http://3v4l.org/vKONS выходы для PHP 5.2.0, 5.2.14 - 5.2.17, 5.3.3 - 5.3.18, 5.4. 0 - 5.4.8

string(37) ""this is a valid address"@example.com" 
bool(false)

и для 5.2.1 - 5.2.13, 5.3.0 - 5.3.2

string(37) ""this is a valid address"@example.com" 
string(37) ""this is a valid address"@example.com"

Замечательно, что он работал для 5.2.0, но не 5.2.1-5.2.13, а затем снова для 5.2.14!!!

Btw 3v4l.org - отличный ресурс для проверки таких изменений поведения во всех доступных версиях PHP.

Есть несколько ошибок открываются, включая термин FILTER_VALIDATE_EMAIL, но ни один из них не соответствует вашей ошибке. Вы можете добавить его в PHP bugtracker...