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_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 тощо.
* Відповідає будь-якому нулю (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

[/^[a-zA-Z0-9._-]+@[a-zA-Z0-9-]+\.[a-zA-Z.]{2,5}$/]

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

Підсумки

  • Регулярний вираз або регулярний вираз у PHP — це алгоритм відповідності шаблону
  • Регулярні вирази дуже корисні під час виконання перевірок підтвердження, створення систем шаблонів HTML, які розпізнають теги тощо.
  • PHP має вбудовані функції, а саме PHP preg_match(), PHP preg_split() і PHP preg_replace(), які підтримують регулярні вирази.
  • Метасимволи дозволяють нам створювати складні шаблони