PHP preg_match(): Регулярні вирази (Regex)
Що таке регулярний вираз у PHP?
Регулярний вираз PHP також відомий як регулярний вираз — це потужний алгоритм зіставлення шаблонів, який можна виконати в одному виразі. У регулярних виразах використовуються такі арифметичні оператори, як (+,-,^), щоб створювати складні вирази. Вони можуть допомогти вам виконати такі завдання, як перевірка адрес електронної пошти, IP-адреси тощо.
Навіщо використовувати регулярні вирази
- Регулярні вирази PHP спрощують визначення шаблонів у рядкових даних шляхом виклику однієї функції. Це економить час кодування.
- Під час перевірки введених користувачем адрес електронної пошти, доменних імен, номерів телефонів, IP-адрес,
- Виділення ключових слів у результатах пошуку
- Під час створення власного шаблону HTML. Regex у PHP можна використовувати для визначення тегів шаблону та заміни їх фактичними даними.
Вбудовані функції регулярного виразу в PHP
PHP має вбудовані функції, які дозволяють нам працювати зі звичайними функціями, про які ми дізнаємося в цьому підручнику з регулярних виразів PHP. Давайте розглянемо функції регулярних виразів, які часто використовуються в PHP.
- preg_match() у PHP – ця функція використовується для виконання шаблону зіставлення рядка в PHP. Він повертає true, якщо збіг знайдено, і false, якщо збіг не знайдено.
- preg_split() у PHP – ця функція використовується для виконання шаблону зіставлення рядка, а потім розділення результатів на числовий масив
- preg_replace() у PHP – ця функція використовується для виконання збігу за шаблоном у рядку та заміни збігу вказаним текстом.
Нижче наведено синтаксис для функції регулярного виразу, наприклад PHP preg_match(), PHP preg_split() або PHP preg_replace().
<?php
function_name('/pattern/',subject);
?>
ТУТ,
- “function_name(…)” – це PHP preg_match(), PHP preg_split() або PHP preg_replace().
- “/…/” Слеші позначають початок і кінець нашої функції перевірки регулярних виразів PHP
- “/pattern/” – це шаблон, який нам потрібно зіставити
- «тема» — текстовий рядок, з яким потрібно зіставити
Давайте тепер розглянемо практичні приклади реалізації наведених вище функцій регулярних виразів PHP.
Preg_match() у PHP
У першому прикладі використовується функція preg_match() у PHP для виконання простого зіставлення шаблону для слова 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.
Ми візьмемо рядкову фразу та розділимо її на масив; шаблон, який потрібно зіставити, є одним пробілом.
Текстовий рядок, який буде використовуватися в цьому прикладі: «Я люблю регулярні вирази».
Наведений нижче код ілюструє реалізацію наведеного вище прикладу.
<?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 тощо. |
| * | Відповідає будь-якому нулю (0) або більше символів | /com*/ відповідає комп’ютеру, зв’язку тощо. |
| + | Необхідно, щоб попередні символи з’являлися принаймні один раз | /yah+oo/ відповідає yahoo |
| \ | Використовується для екранування метасимволів | /yahoo+\.com/ розглядає крапку як буквальне значення |
| [...] | Клас символів | /[abc]/ відповідає abc |
| Арізона | Відповідає малим регістрам | /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._-]+@[a-zA-Z0-9-]+\.[a-zA-Z.]{2,5}$/] »
ТУТ,
- «'/…/'» починає і закінчує регулярний вираз
- «^[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
Як ви можете бачити з наведеного вище прикладу розбивки, метасимволи є дуже потужними, коли мова йде про відповідність шаблонам.
Резюме
- Регулярний вираз або регулярний вираз у PHP — це алгоритм відповідності шаблону
- Регулярні вирази дуже корисні під час виконання перевірок підтвердження, створення систем шаблонів HTML, які розпізнають теги тощо.
- PHP має вбудовані функції, а саме PHP preg_match(), PHP preg_split() і PHP preg_replace(), які підтримують регулярні вирази.
- Метасимволи дозволяють нам створювати складні шаблони




![[/^[a-zA-Z0-9._-]+@[a-zA-Z0-9-]+\.[a-zA-Z.]{2,5}$/]](https://www.guru99.com/images/2013/04/validate_email.png)