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_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
Метазнаци на регулярни изрази
Горните примери използват много основни модели; метасимволите просто ни позволяват да извършваме по-сложни съвпадения на шаблони, като тестване на валидността на имейл адрес. Нека сега да разгледаме често използваните метазнаци.
Метасимвол | 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
Както можете да видите от горната примерна разбивка, метасимволите са много мощни, когато става въпрос за съвпадение на модели.
Oбобщение
- Регулярният израз или Regex в PHP е алгоритъм за съпоставяне на образец
- Регулярните изрази са много полезни при извършване на проверки за валидиране, създаване на системи за HTML шаблони, които разпознават тагове и т.н.
- PHP има вградени функции, а именно PHP preg_match(), PHP preg_split() и PHP preg_replace(), които поддържат регулярни изрази.
- Метасимволите ни позволяват да създаваме сложни модели