Работа с регулярными выражениями
Что же такое "регулярные выражения"?
Регулярные выражения - черезвычайно мощный
инструмент работы со строками. С их помощью можно проводить
анализ и изменение строк на основе заданного шаблона.
Рассмотрим простые (далеко не все) правила формирования
шаблона.
Шаблон состовляется из набора модификаторов, некоторые из
которых приведены в нижеследующей таблице.
\ - Следующий
символ является специальным. Так же применяется для
указания символов, которые могут использоваться в
качестве модификаторов. |
\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
адрес имеет вид "слово@слово.слово".