Устаревший способ проверки валидности email на PHP при помощи регулярных выражений
И начну я с описание с того, как именно этот способ проверяет емейл и почему его сейчас лучше не использовать.Как же он проверяет почту? А делается это примерно вот так:
$email = ''; //входящая строка, в которой может быть все, что угодно, а должна быть почта if (preg_match("/^(?:[a-z0-9]+(?:[-_.]?[a-z0-9]+)?@[a-z0-9_.-]+(?:\.?[a-z0-9]+)?\.[a-z]{2,5})$/i", $email)) { //все ОК, email правильный } else { //проверка email на правильность НЕ пройдена }
Где проверяется с помощью регулярного выражения, соответствует ли содержимое переменной $email шаблону email'а вида "СИМВОЛЫ@СИМВОЛЫ.ДОМЕН".
Почему его лучше не использовать сейчас? Главный минус этой регулярки в том, что её нужно постоянно корректировать в соответствии с изменениями в названиях email. Самый яркий пример этого: домены с русскими именами, например в зоне ".рф". Регулярное выражение выше уже не пропустит емейл типа виталик@почта.рф, так как там забито условие a-z0-9_.- (самое обширное), то есть правильными будут признаны только те названия почт, которые будут содержать английские символы, цифры, земля, точка и пробел. Все остальные будут отсеяны как не правильные.
В общем я бы советовал использовать проверку регуляркой только тем, кто понимает, что она делает и хочет получить какой-то частный результат.
Новый способ проверки правильности e-mail на PHP при помощи базовой функции языка
Этот способ появился относительно недавно, когда разработчики языка PHP ввели функцию filter_var, которая сама проверяет, является ли введенная строка почтой или нет. Вот как это делается с её помощью://входящая строка, в которой может быть все, что угодно, а должна быть почта $email = ''; if (filter_var($email, FILTER_VALIDATE_EMAIL) !== false) { //все ОК, email правильный } else { //проверка email на правильность НЕ пройдена }
Я советую использовать вам именно этот способ, так как единожды поставив такую проверку в код, в будущем вы будете уверены, что она работает как нужно. Разработчики языка PHP сами внесут нужные корректировки в новых версиях.
Дополнение. Никогда не доверяйте одной лишь проверке. Всегда пытайтесь подстраховываться. Например при выводе почты пользователю через HTML можно дополнительно пропустить эту почту через htmlspecialchars(). Операция не сильно ресурсоемкая, а тем не менее за эту часть кода будет спокойнее.
Все комментарии к заметке "Проверка валидности/правильности email при помощи PHP"
Оставьте свой комментарий первым!