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

Какво е регулярен израз в PHP?

PHP регулярен израз известни също като regex са мощен алгоритъм за съпоставяне на образец, който може да се изпълни в един израз. Регулярните изрази използват аритметични оператори като (+,-,^) за създаване на сложни изрази. Те могат да ви помогнат да изпълните задачи като валидиране на имейл адреси, 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/” е шаблонът, който трябва да съпоставим
  • „subject“ е текстовият низ, с който да се съпостави

Нека сега да разгледаме практически примери, които имплементират горепосочените 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.

Ще вземем низова фраза и ще я разбием в масив; шаблонът, който трябва да бъде съпоставен, е един интервал.

Текстовият низ, който ще се използва в този пример, е „I Love Regular Expressions“.

Кодът по-долу илюстрира изпълнението на горния пример.

<?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 функция който изпълнява съпоставяне на шаблон и след това замества шаблона с нещо друго.

Кодът по-долу търси думата guru в 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()

Метазнаци на регулярни изрази

Горните примери използват много основни модели; метасимволите просто ни позволяват да извършваме по-сложни съвпадения на шаблони, като тестване на валидността на имейл адрес. Нека сега да разгледаме често използваните метазнаци.

Метасимвол Descriptйон Пример
. Съвпада с всеки отделен знак с изключение на нов ред /./ съвпада с всичко, което има един знак
^ Съвпада с началото на или низ / изключва знаци /^PH/ съвпада с всеки низ, който започва с PH
$ Съвпада с модела в края на низа /com$/ съвпада с guru99.com,yahoo.com и т.н.
* Съвпада с нула (0) или повече знаци /com*/ съответства на компютър, комуникация и т.н.
+ Изисква предходен знак(и) да се появи поне веднъж /yah+oo/ съвпада с yahoo
\ Използва се за екраниране на мета знаци /yahoo+\.com/ третира точката като буквална стойност
[...] Клас на знаци /[abc]/ съответства на abc
AZ Съвпада с малки букви /az/ съвпада с cool, happy и др.
AZ Съвпада с главни букви /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}$/]

Както можете да видите от горната примерна разбивка, метасимволите са много мощни, когато става въпрос за съвпадение на модели.

Oбобщение

  • Регулярният израз или Regex в PHP е алгоритъм за съпоставяне на образец
  • Регулярните изрази са много полезни при извършване на проверки за валидиране, създаване на системи за HTML шаблони, които разпознават тагове и т.н.
  • PHP има вградени функции, а именно PHP preg_match(), PHP preg_split() и PHP preg_replace(), които поддържат регулярни изрази.
  • Метасимволите ни позволяват да създаваме сложни модели