Какое решение лучше, используя встроенную проверку filter_var('email', FILTER_VALIDATE_EMAIL)
или пользовательскую функцию?
Благодаря!
Пользовательская проверка дает вам больше контроля над тем, как далеко вы хотите пойти с этим. Что такое и недействительно, поскольку адрес электронной почты более сложный, чем вы думаете, и большую часть времени лучше быть слишком слабым, чем слишком строгим. В конце концов, синтаксически действительный адрес электронной почты не гарантирует, что учетная запись фактически существует, не говоря уже о том, что она активно используется. Что-то вроде, оно должно содержать одну @, по крайней мере одну точку после @, по крайней мере один символ перед @, и ни один из незаконных символов, вероятно, достаточно хорош в большинстве случаев.
Фильтр var для электронной почты удаляет все символы, кроме букв , цифр и !#$%&'*+-/=?^_`{|}~@.[]
. Теперь все зависит от того, хотите ли вы пойти с этой фильтрацией или создать собственное решение.
И вот отличная статья:
Проверка ввода: использование filter_var () над регулярными выражениями
PHP filter_var может быть удовлетворительным для большинства приложений, но если вы хотите сравнить производительность и достоверность, посмотрите на этом сайте http://www.linuxjournal.com/article/9585, чтобы понять, что означает соблюдение RFC 2822.
Вы можете использовать мою бесплатную функцию PHP is_email()
для проверки адресов. Он доступен здесь .
Он гарантирует, что адрес полностью совместим с RFC 5321. Он также может дополнительно проверить, действительно ли домен существует.
Вы не должны полагаться на валидатор, чтобы сообщить вам, действительно ли существует адрес электронной почты пользователя: некоторые интернет-провайдеры выдают несовместимые адреса своим пользователям, особенно в странах, которые не используют латинский алфавит. Подробнее в моем эссе о проверке подлинности электронной почты здесь: http://isemail.info/about .
Я нашел это во время Googling, надеюсь, это объясняет вам лучше