PHP / 13. Регулярные выражения

Регулярные выражения – это мощный инструмент сравнения и обработки текста. Они не так быстры, как обычные операции сравнения строк, но отличаются чрезвычайной гибкостью, позволяя создавать шаблоны сравнения для практически любой комбинации символов при помощи довольно простого, хотя и немногословного и до некоторой степени трудного для понимания синтаксиса. В PHP функции регулярных выражений применяются для поиска текста, удовлетворяющего определенному критерию. После того как нужный текст найден, можно заменять или модифицировать как весь текст, так и его части – подстроки, соответствующие шаблону. Например, следующее регулярное выражение преобразует текстовые адреса электронной почты в гиперссылки вида mailto:: $html = preg_replace('/[^@\s]+@([-a-z0-9]+\.)+[a-z]{2,}/i', '$0', $text);
Статьи раздела '13. Регулярные выражения':
Выбор между поглощающим и непоглощающим сравнением
Задача Необходим шаблон для выделения наименьшей из возможных строк, а не наибольшей. Решение Добавьте символ ? после квантификатора, чтобы модифицировать конкретную часть шаблона: // найти все части, выделенные полужирным...
Нахождение n-го совпадения
Задача Необходимо найти не первое вхождение слова, а n-ое. Решение Вызовите функцию preg_match_all(), чтобы занести все совпадения в массив; затем извлеките то совпадение, которое вас интересует: preg_match_all ("/$pattern...
Переход от ereg к preg
Задача Необходимо отказаться от применения функций ereg в пользу функций preg. Решение Сначала добавим в шаблон ограничители: preg_match('/pattern/', 'string') Для не чувствительного к регистру сравнения с помощью функц...
Поиск в файле всех строк, соответствующих шаблону
Задача Необходимо найти в файле все строки, соответствующие шаблону. Решение Прочитайте файл в массив и примените функцию preg_grep(). Обсуждение Есть два способа сделать это. Рассмотрим тот, что побыстрее: $pattern = ...
Поиск слов
Задача Необходимо выделить все слова в строке. Решение Ключ к решению этой задачи в том, чтобы аккуратно определить, что именно мы понимаем под словом. Сформулировав это определение, используйте специальные символьные типы дл...
Проверка правильности адресов электронной почты
Задача Необходимо проверить, является ли адрес электронной почты правильным. Решение Это очень популярный вопрос, и каждый отвечает на него по-своему, в зависимости от собственного определения правильности. Если правильным сч...
Сборка текста, заключенного в теги HTML
Задача Необходимо вычленить текст, находящийся внутри тегов HTML. Например, требуется найти все заголовки в HTML-документе. Решение Прочитайте HTML-файл в строку и используйте в шаблоне непоглощающее сравнение: $html = joi...
Чтение записей с шаблоном-разделителем
Задача Необходимо прочитать записи из файла, в котором каждая запись отделена шаблоном, который можно сопоставить с регулярным выражением. Решение Прочитайте весь файл в строку, а затем выделите из нее регулярное выражение: ...
Экранирование специальных символов внутри регулярного выражения
Задача Необходимо трактовать такие символы, как * или +, внутри регулярного выражения не как метасимволы, а как литералы. Это полезно, если пользователи вводят в строке поиска то, что впоследствии будет использовано в регулярном ...

Страницы: 1