Регулярные выражения в PHP
Что же такое "регулярные выражения"?
Регулярные выражения - черезвычайно мощный инструмент работы со строками. С их помощью можно проводить анализ и изменение строк на основе заданного шаблона.
Рассмотрим простые (далеко не все) правила формирования шаблона.
Шаблон состовляется из набора модификаторов, некоторые из которых приведены в нижеследующей таблице.
| \ - Следующий символ является специальным. Так же применяется для указания символов, которые могут использоваться в качестве модификаторов. | \n - соответствует
символу перевода строки \* - символ "*", а * - модификатор |
| ^ - Маркер начала строки. | ^abc - строка, начинающаяся с "abc". |
| $ - Маркер конца строки. | abc$ - строка, заканчивающаяся на "abc". |
| * - Предыдущий символ встречается 0 или больше раз. | Шаблону w* соответствуют строки what, buka, agwt |
| + - Предыдущий символ встречается 1 или больше раз. | Шаблону w+
соответствуют строки what, agwt. Строка buka уже не соответствует. |
| ? - Предыдущий символ встречается 0 или 1 раз. | Шаблону w?r соответствуют строки ara, awra. |
| . - Соответствует любому символу, отличному от "\n". |
Это простейшие модификаторы, знания которых нам пока хватит.
В PHP существует несколько функций для работы с регулярными выражениями: ereg(), ereg_replace(), eregi(), ereg_replacei() и split().
Функции с суффиксом i представляют из себя аналоги функций без этого суффикса, не чувствтительные к регистру операндов.
Рассмотрим функцию ereg(), синтаксис которой:
int ereg(string pattern, string string, array [regs]);
Рассмотрим некоторый адрес maxx@mail.ru. Очевидно, что правдоподобный адрес должен иметь вид "слово@слово.слово". В терминах шаблонов произвольный символ обозначается знаком "." (мы не будем сейчас учитывать тот факт, что в адресах допустимы не все символы). В каждом слове должен быть по крайней мере один символ, таким образом, шаблон слова будет иметь вид ".+". Вспомним теперь, что "." - это модификатор, и для явного указания точки (в качестве символа) нужно писать "\.".
Таким образом шаблон будет иметь вид ".+@.+\..+".
Наша проверка будет иметь следующий вид:
if (ereg(".+@.+\..+", $email)) {
echo "Адрес, вроде, правильный";
}
else {
echo "Введите, батенька, адрес заново";
}
После такой проверки мы можем быть уверены, что e-mail адрес имеет вид "слово@слово.слово".
Оставить комментарий
Комментарии




[php]
function validEmail($email) {
if ($email=="") { return false; }
$domain = @explode("@",$email);
$domain = @$domain[1];
return (!eregi("^([a-zA-Z0-9~\._-]{2,})(@{1}[a-zA-Z0-9~\._-]{2,})(\.{1}[a-zA-Z]{2,4})$",$email)) ? false : true ;
}
[/php]




Правильней, на мой взгляд, будет использовать выражение вида [a-z0-9]+\@[-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]+/i


есть еще такая штука как скобки () которая и даст вам возможность получить мыло с доменным именем разных уровней




правдоподобный адрес может выглядеть и так:
kipnisad@domain.org.ru
