PHP preg_match(): Регулярни изрази (Regex)
⚡ Умно обобщение
Регулярните изрази в PHP са инструменти за съпоставяне на шаблони, които валидират, разделят и заместват текст в един израз. Това ръководство обхваща основните функции preg_match, preg_split и preg_replace, обяснява често срещаните метасимволи и изгражда работещ шаблон за валидиране на имейли стъпка по стъпка.

Какво е регулярен израз в PHP?
PHP регулярни изрази, известни още като regex, са мощен инструмент за съпоставяне на шаблони, който може да се изпълни в един израз. Регулярните изрази използват специални символи като +, - и ^, за да създават сложни изрази. Те могат да ви помогнат да изпълнявате задачи като валидиране на имейл адреси, 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/'“ е шаблонът, който трябва да съпоставим
- „subject“ е текстовият низ, с който да се съпостави
Нека сега разгледаме практически примери, които имплементират горните 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().
Ще вземем низова фраза и ще я разбием в масив; шаблонът, който трябва да бъде съпоставен, е един интервал.
Текстовият низ, който ще се използва в този пример, е „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 и др. |
| * | Съвпада с нула или повече от предходните знаци | /com*/ съответства на компютър, комуникация и т.н. |
| + | Изисква предходните знаци да се появят поне веднъж | /yah+oo/ съвпада с yahoo |
| \ | Използва се за екраниране на метасимволи | /yahoo+\.com/ третира точката като буквална стойност |
| [...] | Клас на знаци | /[abc]/ съответства на a, b или c |
| 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._-]“ съвпада с всякакви малки или главни букви, числа между 0 и 9, както и точки, долни черти или тирета.
- „+@[a-zA-Z0-9-]“ съответства на символа @, последван от малки или главни букви, цифри между 0 и 9 или тирета.
- „+\.[a-zA-Z.]{2,5}$/“ екранира точката с помощта на обратната наклонена черта, след което съвпада с всички малки или главни букви с дължина на символа между 2 и 5 в края на низа.
Прегледайте URL http://localhost/phptuts/preg_match.php
Както можете да видите от горното разпределение, метасимволите са много мощни, когато става въпрос за съвпадение на модели.




