PHP preg_match(): Регулярні вирази (Regex)

⚡ Розумний підсумок

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

  • 🧩 Що таке регулярний вираз: Регулярний вираз — це шаблон, який описує текст, дозволяючи одній функції перевіряти, шукати або перетворювати рядки.
  • preg_match: preg_match перевіряє, чи є шаблон у рядку, і повертає true при першому збігу, що ідеально підходить для перевірки.
  • ✂️ preg_split: Функція preg_split розбиває рядок на масив скрізь, де зустрічається цей шаблон, наприклад, розділяючи речення на пробіли.
  • 🔁 preg_replace: Функція preg_replace знаходить кожен збіг шаблону та замінює його новим текстом, що корисно для створення шаблонів та підсвічування.
  • 🔤 Метасимволи: Такі символи, як ., ^, $, * та +, створюють складні шаблони, наприклад, прив'язують збіг до початку або кінця.
  • ???? Шаблон електронної пошти: Класи символів та квантифікатори об'єднуються в єдиний шаблон, який перевіряє, чи правильно сформована адреса електронної пошти.
  • 🤖 AI Assist: Інструменти штучного інтелекту можуть писати регулярний вираз із простого опису та пояснювати або налагоджувати складний існуючий шаблон.

Регулярні вирази PHP

Що таке регулярний вираз у 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_split()

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

PHP Preg_replace()

Метасимволи регулярного виразу

У наведених вище прикладах використовувалися дуже прості шаблони. Метасимволи дозволяють нам виконувати складніші зіставлення зі шаблонами, такі як перевірка дійсності адреси електронної пошти. Тепер давайте розглянемо поширені метасимволи.

Метахарактер Опис Приклад
. Відповідає будь-якому окремому символу, крім нового рядка /./ відповідає всьому, що має один символ
^ Збігається з початком рядка або виключає символи /^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

Шаблон перевірки електронної пошти PHP

Як видно з наведеного вище розподілу, метасимволи є дуже потужними, коли справа доходить до зіставлення шаблонів.

Поширені запитання

Функція preg_match зупиняється на першому збігу та заповнює $matches цим одним результатом. Функція preg_match_all знаходить усі збіги в рядку та повертає їх усі у вкладеному масиві, що підходить, наприклад,tracповторювані елементи.

Модифікатори слідують за закриваючим роздільником і змінюють поведінку зіставлення. Модифікатор i робить шаблон нечутливим до регістру, m обробляє кожен рядок окремо для ^ та $, а s дозволяє крапці збігатися з новими рядками, як у /guru/i.

Загорніть частини шаблону в дужки, щоб створити групи захоплення. Після preg_match повний збіг знаходиться в $matches[0], а кожна група йде далі в $matches[1], $matches[2] тощо.

Так. Опишіть текст, який ви хочете знайти, наприклад, номер телефону або формат дати, і штучний інтелект може створити шаблон плюс приклад preg_match. Перевірте це на реальних та граничних вхідних даних, перш ніж покладатися на нього.

Так. Вставте шаблон, і ШІ зможе розбити його по токенах, пояснити, чому відповідає кожна частина, і вказати, чому він не працює з певними вхідними даними, а потім запропонувати виправлену версію.

Підсумуйте цей пост за допомогою: