PHP: Регулярные выражения: Расширенные возможности

Расширенные возможности регулярных выражений в PHP позволяют решать более сложные задачи, такие как обработка текста, очистка данных и защита от уязвимостей. Рассмотрим некоторые из этих возможностей.

Захват групп и обратные ссылки


Захват групп: Группы позволяют извлекать определенные фрагменты текста:
preg_match('/(\d+) (\w+)/', '123 apples', $matches);
// $matches[1] => '123', $matches[2] => 'apples'

Обратные ссылки: Обратные ссылки позволяют использовать захваченные группы в замене:
preg_replace('/(\w+) (\w+)/', '$2, $1', 'John Doe');
// Результат: 'Doe, John'

Утверждения (Lookahead и Lookbehind)


Positive Lookahead: Проверяет, что после текущего положения есть определенный паттерн:
preg_match('/apple(?= pie)/', 'I love apple pie'); // Вернет true

Negative Lookahead: Проверяет, что после текущего положения нет определенного паттерна:
preg_match('/apple(?! pie)/', 'I love apple juice'); // Вернет true

Positive Lookbehind: Проверяет, что перед текущим положением есть определенный паттерн:
preg_match('/(?<=love )apple/', 'I love apple'); // Вернет true

Negative Lookbehind: Проверяет, что перед текущим положением нет определенного паттерна:
preg_match('/(?<!love )apple/', 'I hate apple'); // Вернет true

Режимы и флаги


i (case-insensitive): Игнорирует регистр символов:
preg_match('/apple/i', 'APPLE'); // Вернет true

m (multiline): Позволяет использовать ^ и $ для начала и конца каждой строки:
preg_match('/^apple/m', "banana\napple"); // Вернет true

U (ungreedy): Меняет жадные квантификаторы на ленивые:
preg_match('/.*?(apple)/U', 'I have an apple'); // Вернет 'apple'

Модификаторы Unicode


u (UTF-8 mode): Включает поддержку UTF-8 символов:
preg_match('/привет/u', 'Привет, мир!'); // Вернет true

Поддержка символьных классов


POSIX Character Classes: Поддержка POSIX-классов символов:
preg_match('/[:digit:]+\./', 'The answer is 42.'); // Вернет true

Удаление комментариев и пустых строк


Использование регулярных выражений для удаления комментариев и пустых строк из кода:
$clean_code = preg_replace('/\/\*(.*?)\*\//s', '', $code);

HTML/CSS очистка


Использование регулярных выражений для удаления опасных тегов и стилей:
$safe_html = preg_replace('/<\/?[^>]+>/si', '', $html);

Паттерны для URL и Email


Паттерны для валидаторов URL и email:
preg_match('/^[^\s@]+@[^\s@]+\.[^\s@]+$/', 'email@example.com'); // Вернет true

Эти расширенные возможности помогут вам эффективнее использовать регулярные выражения в PHP и решать более сложные задачи.

Автор:  11.12.2025 07:17:59 am