PHP Функції Регулярних виразів
PHP Регулярні вирази. Інтро
Регулярні вирази дозволяють шукати та замінювати шаблони в рядках.
Інсталяція
Функції регулярних виразів PHP є частиною ядра PHP. Для використання цих функцій не потрібна установка.
Конфігурація середовища виконання
Ці налаштування у php.ini можна використовувати для обмеження кількості часу або ресурсів, які використовуються під час оцінювання регулярних виразів.
| Назва | За замовчуванням | Опис | Змінний |
|---|---|---|---|
| pcre.backtrack_limit | "1000000" | Максимальна кількість зворотних запитів, яку дозволено виконувати механізму регулярних виразів під час обчислення виразу (доступно, починаючи з PHP 5.2) | PHP_INI_ALL |
| pcre.recursion_limit | "100000" | Максимальна глибина рекурсії, яку дозволено досягати механізму регулярних виразів під час обчислення виразу (доступно, починаючи з PHP 5.2) | PHP_INI_ALL |
| pcre.jit | "1" | Якщо встановлено значення "1", увімкнеться оперативна компіляція PCRE (регулярні вирази, сумісні з Perl). (доступно з PHP 7.0) | PHP_INI_ALL |
PHP Функції регулярних виразів
| Функція | Опис |
|---|---|
| preg_filter() | Повертає рядок або масив із заміненими збігами шаблону, але лише якщо збіги знайдено |
| preg_grep() | Повертає масив, що складається лише з елементів вхідного масиву, які відповідають шаблону |
| preg_last_error() | Повертає код помилки, який вказує на причину невдачі останнього виклику регулярного виразу |
| preg_match() | Знаходить перший збіг шаблону в рядку |
| preg_match_all() | Знаходить усі збіги шаблону в рядку |
| preg_replace() | Повертає рядок, де збіги шаблону (або масиву шаблонів) замінено підрядком (або масивом підрядків) у заданому рядку |
| preg_replace_callback() | За наявності виразу та зворотного виклику повертає рядок, у якому всі збіги виразу замінено підрядком, повернутим зворотним викликом |
| preg_replace_callback_array() | Маючи масив, що асоціює вирази зі зворотними викликами, повертає рядок, у якому всі збіги кожного виразу замінено підрядком, повернутим зворотним викликом |
| preg_split() | Розбиває рядок на масив, використовуючи збіги регулярного виразу як розділювачі |
| preg_quote() | Екранує символи, які мають особливе значення в регулярних виразах, ставлячи перед ними зворотну скісну риску |
Модифікатори регулярних виразів
Модифікатори можуть змінювати спосіб виконання пошуку.
| Модифікатор | Опис |
|---|---|
| i | Виконує пошук без урахування регістру |
| m | Виконує багаторядковий пошук (шаблони, які шукають початок або кінець рядка, відповідатимуть початку чи кінці кожного рядка) |
| u | Вмикає правильну відповідність шаблонів у кодуванні UTF-8 |
Шаблони регулярних виразів
Дужки використовуються для пошуку діапазону символів:
| Вираз | Опис |
|---|---|
| [abc] | Знайти один символ із варіантів у дужках |
| [^abc] | Знайти будь-який символ НЕ в дужках |
| [0-9] | Знайти один символ із діапазону від 0 до 9 |
Метасимволи
Метасимволи – це символи зі спеціальним значенням:
| Метасимволи | Опис |
|---|---|
| | | Знайти збіг для будь-якого шаблону, розділеного | а саме: cat|dog|fish |
| . | Знайти лише один екземпляр будь-якого символу |
| ^ | Знайти відповідність на початку рядка, як у: ^Hello |
| $ | Знайти збіг у кінці рядка, як у: World$ |
| \d | Знайти цифру |
| \s | Знайти пробіл |
| \b | Знайти збіг на початку такого слова: \bWORD або в кінці такого слова: WORD\b |
| \uxxxx | Знайти символ Unicode, заданий шістнадцятковим числом xxxx |
Квантори
Квантори визначають кількість:
| Квантор | Опис |
|---|---|
| n+ | Відповідає будь-якому рядку, який містить принаймні один n |
| n* | Відповідає будь-якому рядку, який містить нуль або більше випадків n |
| n? | Відповідає будь-якому рядку, який містить нуль або одне входження n |
| n{x} | Відповідає будь-якому рядку, який містить послідовність X n's |
| n{x,y} | Збігається з будь-яким рядком, який містить послідовність від X до Y n's |
| n{x,} | Збігається з будь-яким рядком, який містить послідовність принаймні X n's |
Примітка: Якщо ваш вираз потребує пошуку одного зі спеціальних символів, ви можете використовувати зворотну скісну риску ( \ ), щоб екранувати їх. Наприклад, для пошуку одного або кількох знаків запитання можна використати наступний вираз: $pattern = '/\?+/';

