Главная

Программирование на PHP для начинающих

Регулярные выражения

Под регулярными выражениями понимают некоторые шаблоны, которые позволяют найти последовательности символов в текстах (в обычных или в файлах) и, при необходимости, заменить их на другие.

Самая простая задача, которая требует использования регулярных выражений - поиск последовательности букв в слове (имени пользователей при регистрации, написания домена), если мы хотим запретить некоторые слова. Для поиска слов, выражений, проще всего использовать функцию preg_match(), которая возвращает true или false:

if( preg_match('!ucoz.ru!', $_POST['domain']) ){
   echo 'Найдено';
}

Примеры регулярных выражений

Одна из задач, которая встает перед разработчиком скриптов PHP - замена некоторого участка текста на другой.

Например, мы ввели свой тэг для выделения информации, чтобы "на лету" менять на нужный текст, который может зависеть от ряда условий (авторизован ли пользователь и т.п.). Для этого нужен простенький код на PHP и короткое регулярное выражение.

$test = '<b>текст до</b> <teg>Какой-то текст</teg> <i>текст после</i> ';
echo $test = preg_replace('!<teg>(.*)</teg>!iU','bla-bla-bla \\1 new bla-bla-bla',$test);

Итак, функция preg_replace() требует:
шаблон, который описывает искомый текст
на что его заменить
исходный текст (тот, который и может содержать искомый текст). Мы составили шаблон <teg>(.*)</teg>, который заключен в кавычки и обязательную пару символов (здесь выбран знак !, можно |, или /, или # ...). После второго экранирующего символа перед закрывающей кавычкой идут спецальные модификаторы: iU. Буква i позволяет делать шаблон регистронезависимым, а U - "нежадным". Последовательность \\1 подставляет найденный фрагмент (это может быть не только слово), т.е. то, что мы обозначили в шаблоне (.*), в исходном тексте.

Примеры некоторых регулярных выражений
[a-zA-z]* - соответствует буквенным символам латиницы
[0-9]* - соответствует цифровым символам
[a-zA-zа-яА-я,\.;]* - можно просто перечислить нужные символы, не забывая экранировать слэшем \ спецсимволы (. сам слэш \ ? скобки ...)
[^0-9]* - знак ^ позволяет исключить символы

Hosted by uCoz