|
Часто спрашивают как определить правильность email (например, при заполнении формы)? А очень просто - добавить следующую функцию
в скрипт:
<?php function CheckAddress($email) { if (!preg_match("/^[a-z0-9]([a-z0-9_.-]+)*[a-z0-9]@([a-z0-9]([a-z0-9_-]+)*[a-z0-9].)+[a-z]{2,4}$/i",$email)) return "Неправильный адрес E-mail: ".htmlspecialchars($email); else return 0; } ?>
Давайте по порядку разберем наше регулярное выражение:
/ - определяет начало и конец нашего выражения, т.е. регэкспом считается все между двумя такими слешами
^ - в данном случае указывает, что наше выражение - находится в начале строки
[a-z0-9] - указывает, что первый символ емаила должен быть из этого множества (т.е. только циферки и буковки)
([a-z0-9_\.-]+) - т.к. в адресе должно быть более 1-го символа, указываем, что должны встречаться символы из [a-z0-9_\.-] 1 и более раз.
\. - означает точку как символ (не путать с '.' которая указывает любой единичный символ)
@ - тут, наверное, все понятно :) т.к. емейл - без "собаки"....хмм
([a-z0-9]([a-z0-9_-]+)*[a-z0-9]\.)+ - аналогично части до "собаки"
[a-z]{2,4}$ - домен (который идет в адресе после точки) от 2 до 4 символов. $ - конец строки
i после / указывает, что в данном выражении регистр букв не играет роли.
Ну вот, собственно и все :)
|