PHP preg_match(): Регулярні вирази (Regex)
⚡ Розумний підсумок
Регулярні вирази в PHP – це інструменти зіставлення зі зразками, які перевіряють, розділяють та замінюють текст в одному виразі. У цьому посібнику розглядаються основні функції preg_match, preg_split та preg_replace, пояснюються поширені метасимволи та крок за кроком створюється робочий шаблон перевірки електронної пошти.

Що таке регулярний вираз у PHP?
Регулярні вирази PHP, також відомі як регулярні вирази, – це потужний інструмент зіставлення зі зразком, який можна виконати в одному виразі. Регулярні вирази використовують спеціальні символи, такі як +, - та ^, для створення складних виразів. Вони можуть допомогти вам виконувати такі завдання, як перевірка адрес електронної пошти, IP-адрес тощо.
Навіщо використовувати регулярні вирази
- Регулярні вирази PHP спрощують ідентифікацію шаблонів у рядкових даних, викликаючи одну функцію. Це економить нам час кодування.
- Під час перевірки введених користувачем даних, таких як адреси електронної пошти, доменні імена, номери телефонів та IP-адреси
- Виділення ключових слів у результатах пошуку
- Під час створення власного шаблону HTML. Regex у PHP можна використовувати для визначення тегів шаблону та заміни їх фактичними даними.
Вбудовані функції регулярного виразу в PHP
PHP має вбудовані функції, які дозволяють нам працювати з регулярними виразами, про що ми дізнаємося в цьому посібнику. Давайте розглянемо найпоширеніші функції регулярних виразів у PHP.
- preg_match() у PHP – ця функція використовується для виконання зіставлення рядка зі зразком. Вона повертає true, якщо збіг знайдено, і false, якщо збіг не знайдено.
- preg_split() у PHP – ця функція використовується для виконання зіставлення зі зразком у рядку та подальшого розділення результатів на числовий масив.
- preg_replace() у PHP – ця функція використовується для виконання збігу за шаблоном у рядку та заміни збігу вказаним текстом.
Нижче наведено синтаксис функції регулярного виразу, такої як preg_match(), preg_split() або preg_replace().
<?php
function_name('/pattern/',subject);
?>
ТУТ,
- «function_name(…)» — це або preg_match(), preg_split(), або preg_replace().
- «/…/» – косі риски, що позначають початок і кінець нашого регулярного виразу
- «'/pattern/'» – це шаблон, який нам потрібно знайти
- «тема» — текстовий рядок, з яким потрібно зіставити
Давайте тепер розглянемо практичні приклади, що реалізують вищезазначені функції регулярних виразів PHP.
Preg_match() у PHP
У першому прикладі функція preg_match() використовується для виконання простого зіставлення зі зразком слова guru у заданому URL.
Наведений нижче код показує реалізацію функції preg_match() для наведеного вище прикладу.
<?php $my_url = "www.guru99.com"; if (preg_match("/guru/", $my_url)) { echo "the url $my_url contains guru"; } else { echo "the url $my_url does not contain guru"; } ?>
Перейдіть до URL http://localhost/phptuts/preg_match_simple.php
Давайте розглянемо частину коду, яка відповідає за наш вивід, preg_match('/guru/', $my_url)ТУТ,
- “preg_match(…)” – це функція регулярного виразу PHP
- “/guru/” – це шаблон регулярного виразу, який потрібно знайти
- “$my_url” – це змінна, що містить текст, з яким потрібно порівняти.
PHP Preg_split()
Давайте тепер розглянемо інший приклад, який використовує функцію preg_split().
Ми візьмемо рядкову фразу та розділимо її на масив; шаблон, який потрібно зіставити, є одним пробілом.
Текстовий рядок, який буде використовуватися в цьому прикладі: «Я люблю регулярні вирази».
Наведений нижче код ілюструє реалізацію наведеного вище прикладу.
<?php $my_text = "I Love Regular Expressions"; $my_array = preg_split("/ /", $my_text); print_r($my_array ); ?>
Перейдіть до URL http://localhost/phptuts/preg_split.php
PHP Preg_replace()
Давайте тепер розглянемо preg_replace() функція PHP який виконує збіг шаблону, а потім замінює шаблон чимось іншим.
Наведений нижче код шукає слово гуру в a рядок.
Він замінює слово guru на слово guru, оточене CSS-кодом, який виділяє колір фону.
<?php $text = "We at Guru99 strive to make quality education affordable to the masses. Guru99.com"; $text = preg_replace("/Guru/", '<span style="background:yellow">Guru</span>', $text); echo $text; ?>
Припускаючи, що ви зберегли файл preg_replace.php, перейдіть до URL http://localhost/phptuts/preg_replace.php
Метасимволи регулярного виразу
У наведених вище прикладах використовувалися дуже прості шаблони. Метасимволи дозволяють нам виконувати складніші зіставлення зі шаблонами, такі як перевірка дійсності адреси електронної пошти. Тепер давайте розглянемо поширені метасимволи.
| Метахарактер | Опис | Приклад |
|---|---|---|
| . | Відповідає будь-якому окремому символу, крім нового рядка | /./ відповідає всьому, що має один символ |
| ^ | Збігається з початком рядка або виключає символи | /^PH/ відповідає будь-якому рядку, який починається з PH |
| $ | Збігається зі шаблоном у кінці рядка | /com$/ відповідає guru99.com, yahoo.com тощо. |
| * | Збігається з нулем або кількома попередніми символами | /com*/ відповідає комп’ютеру, зв’язку тощо. |
| + | Попередній(і) символ(и) повинен(і) з'явитися принаймні один раз | /yah+oo/ відповідає yahoo |
| \ | Використовується для екранування метасимволів | /yahoo+\.com/ розглядає крапку як буквальне значення |
| [...] | Клас символів | /[abc]/ відповідає a, b або c |
| Арізона | Відповідає малим регістрам | /az/ відповідає cool, happy тощо. |
| А-Я | Відповідає великим регістрам | /AZ/ відповідає ЩО, ЯК, ЧОМУ тощо. |
| 0-9 | Відповідає будь-якому числу від 0 до 9 | /0-4/ відповідає 0,1,2,3,4 |
Наведений вище список містить лише найбільш часто використовувані метасимволи в регулярних виразах.
Давайте тепер розглянемо досить складний приклад, який перевіряє достовірність адреси електронної пошти.
<?php $my_email = "name@company.com"; if (preg_match("/^[a-zA-Z0-9._-]+@[a-zA-Z0-9-]+\.[a-zA-Z.]{2,5}$/", $my_email)) { echo "$my_email is a valid email address"; } else { echo "$my_email is NOT a valid email address"; } ?>
Пояснення шаблону перевірки електронної пошти
ТУТ,
- «/…/» починає та закінчує регулярний вираз
- «^[a-zA-Z0-9._-]» відповідає будь-яким літерам нижнього або верхнього регістру, цифрам від 0 до 9, а також крапкам, символам підкреслення або тире.
- «+@[a-zA-Z0-9-]» відповідає символу @, за яким йдуть малі або великі літери, цифри від 0 до 9 або тире.
- «+\.[a-zA-Z.]{2,5}$/» екранує крапку за допомогою зворотної скісної риски, а потім знаходить збіги з будь-якими малими або великими літерами довжиною символів від 2 до 5 наприкінці рядка.
Перейдіть до URL http://localhost/phptuts/preg_match.php
Як видно з наведеного вище розподілу, метасимволи є дуже потужними, коли справа доходить до зіставлення шаблонів.




