PHP Регулярні вирази
Що таке регулярний вираз?
Регулярний вираз — це послідовність символів, яка формує шаблон пошуку. Коли ви шукаєте дані в тексті, ви можете використовувати цей шаблон пошуку, щоб описати те, що ви шукаєте.
Регулярний вираз може бути одним символом або більш складним шаблоном.
Регулярні вирази можна використовувати для виконання всіх типів операцій пошуку тексту та заміни тексту.
Синтаксис
В PHP регулярні вирази — це рядки, що складаються з роздільників, шаблону та додаткових модифікаторів.
$exp = "/w3schools/i";
У наведеному вище прикладі /
є роздільником, w3schools є шаблоном, яким виконується пошук, а i
є модифікатором, який робить пошук нечутливим до регістру.
Роздільником може бути будь-який символ, який не є літерою, цифрою, зворотною скісною рискою чи пробілом. Найпоширенішим роздільником є коса риска (/), але якщо ваш шаблон містить косу риску, зручно вибрати інші роздільники, наприклад # або ~.
Функції регулярних виразів
PHP надає різноманітні функції, які дозволяють використовувати регулярні вирази. Функції preg_match()
, preg_match_all()
і preg_replace()
є одними з найпоширеніших:
Функція | Опис |
---|---|
preg_match() | Повертає 1, якщо шаблон знайдено в рядку, і 0, якщо ні |
preg_match_all() | Повертає кількість разів, коли шаблон було знайдено в рядку, яке також може бути 0 |
preg_replace() | Повертає новий рядок, де відповідні шаблони було замінено іншим рядком |
Використання preg_match()
Функція preg_match()
повідомить вам, чи містить рядок збіги шаблону.
Приклад
Використовуйте регулярний вираз для пошуку "w3schools" у рядку без урахування регістру:
<?php
$str = "Visit W3Schools";
$pattern = "/w3schools/i";
echo preg_match($pattern, $str); // Виведе 1
?>
Спробуйте самі »
Використання preg_match_all()
Функція preg_match_all()
повідомить вам, скільки збігів було знайдено для шаблону в рядку.
Приклад
Використовуйте регулярний вираз для підрахунку кількості входжень "ain" у рядку без урахування регістру:
<?php
$str = "The rain in SPAIN falls mainly on the plains.";
$pattern = "/ain/i";
echo preg_match_all($pattern, $str); // Виведе 4
?>
Спробуйте самі »
Використання preg_replace()
Функція preg_replace()
замінить усі збіги шаблону в рядку іншим рядком.
Приклад
Використовуйте регулярний вираз без урахування регістру, щоб замінити Microsoft на W3Schools у рядку:
<?php
$str = "Visit Microsoft!";
$pattern = "/microsoft/i";
echo preg_replace($pattern, "W3Schools", $str); // Виведе "Visit W3Schools!"
?>
Спробуйте самі »
Модифікатори регулярних виразів
Модифікатори можуть змінювати спосіб виконання пошуку.
Модифікатор | Опис |
---|---|
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 = '/\?+/';
Групування
Ви можете використовувати круглі дужки ( )
, щоб застосувати квантифікатори до цілих шаблонів. Їх також можна використовувати для вибору частин візерунка, які будуть використовуватися як збіг.
Приклад
Використовуйте групування для пошуку слова "banana", шукаючи ba, а потім два випадки na:
<?php
$str = "Apples and bananas.";
$pattern = "/ba(na){2}/i";
echo preg_match($pattern, $str); // Outputs 1
?>
Спробуйте самі »
Повний довідник RegExp
Щоб отримати повну довідку, перейдіть до Повного довідника з регулярних виразів PHP на нашому сайті W3Schools українською.
Довідник містить описи та приклади всіх функцій регулярного виразу.