PHP preg_match(): regulární výrazy (regex)
⚡ Chytré shrnutí
Regulární výrazy v PHP jsou nástroje pro porovnávání vzorů, které ověřují, rozdělují a nahrazují text v jednom výrazu. Tento návod se zabývá základními funkcemi preg_match, preg_split a preg_replace, vysvětluje běžné metaznaky a krok za krokem vytváří funkční vzor pro ověřování e-mailů.

Co je regulární výraz v PHP?
Regulární výrazy v PHP, také známé jako regex, jsou výkonným nástrojem pro porovnávání vzorů, který lze provést v jediném výrazu. Regulární výrazy používají speciální znaky, jako jsou +, - a ^, k vytváření složitých výrazů. Mohou vám pomoci s úkoly, jako je ověřování e-mailových adres, IP adres a dalších.
Proč používat regulární výrazy
- Regulární výrazy v PHP zjednodušují identifikaci vzorů v řetězcových datech voláním jediné funkce. To nám šetří čas strávený kódováním.
- Při ověřování uživatelských vstupů, jako jsou e-mailové adresy, názvy domén, telefonní čísla a IP adresy
- Zvýraznění klíčových slov ve výsledcích vyhledávání
- Při vytváření vlastní HTML šablony. Regex v PHP lze použít k identifikaci značek šablon a jejich nahrazení skutečnými daty.
Vestavěné funkce regulárních výrazů v PHP
PHP má vestavěné funkce, které nám umožňují pracovat s regulárními výrazy, což se v tomto tutoriálu naučíme. Pojďme se podívat na běžně používané funkce regulárních výrazů v PHP.
- preg_match() v PHP – tato funkce se používá k porovnávání vzorů s řetězcem. Vrací true, pokud je nalezena shoda, a false, pokud shoda nalezena není.
- preg_split() v PHP – tato funkce se používá k provedení porovnávání vzorů s řetězcem a následnému rozdělení výsledků do číselného pole.
- preg_replace() v PHP – tato funkce se používá k provedení shody vzoru na řetězci a následné nahrazení shody zadaným textem.
Níže je uvedena syntaxe regulárních výrazů, jako například preg_match(), preg_split() nebo preg_replace().
<?php
function_name('/pattern/',subject);
?>
TADY,
- „function_name(…)“ je buď preg_match(), preg_split() nebo preg_replace().
- „/…/“ lomítka označují začátek a konec regulárního výrazu
- „'/pattern/'“ je vzor, který potřebujeme shodovat
- „předmět“ je textový řetězec, se kterým se má porovnávat
Pojďme se nyní podívat na praktické příklady, které implementují výše uvedené regulární výrazy PHP.
Preg_match() v PHP
První příklad používá funkci preg_match() k provedení jednoduchého porovnávání vzoru pro slovo guru v daném URL.
Níže uvedený kód ukazuje implementaci funkce preg_match() pro výše uvedený příklad.
<?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"; } ?>
Přejděte na URL http://localhost/phptuts/preg_match_simple.php
Prozkoumejme část kódu zodpovědnou za náš výstup, preg_match('/guru/', $my_url)ZDE,
- „preg_match(…)“ je funkce regulárního výrazu PHP
- „'/guru/'“ je vzor regulárního výrazu, který se má porovnat
- „$my_url“ je proměnná obsahující text, se kterým se má porovnávat.
PHP Preg_split()
Podívejme se nyní na další příklad, který používá funkci preg_split().
Vezmeme řetězcovou frázi a rozložíme ji do pole; vzor, který má být spárován, je jedna mezera.
Textový řetězec, který má být použit v tomto příkladu, je „Miluji regulární výrazy“.
Níže uvedený kód ilustruje implementaci výše uvedeného příkladu.
<?php $my_text = "I Love Regular Expressions"; $my_array = preg_split("/ /", $my_text); print_r($my_array ); ?>
Přejděte na URL http://localhost/phptuts/preg_split.php
PHP Preg_replace()
Podívejme se nyní na funkci preg_replace(). Funkce PHP který provede shodu vzoru a poté vzor nahradí něčím jiným.
Níže uvedený kód hledá slovo guru v a šňůra.
Nahrazuje slovo guru slovem guru obklopeným kódem CSS, který zvýrazňuje barvu pozadí.
<?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; ?>
Za předpokladu, že jste uložili soubor preg_replace.php, přejděte do URL http://localhost/phptuts/preg_replace.php
Metaznaky regulárních výrazů
Výše uvedené příklady používaly velmi základní vzory. Metaznaky nám umožňují provádět složitější porovnávání vzorů, například testovat platnost e-mailové adresy. Pojďme se nyní podívat na běžně používané metaznaky.
| Metacharakter | Description | Příklad |
|---|---|---|
| . | Odpovídá libovolnému jednotlivému znaku kromě nového řádku | /./ odpovídá všemu, co má jeden znak |
| ^ | Odpovídá začátku řetězce nebo vylučuje znaky | /^PH/ odpovídá libovolnému řetězci, který začíná PH |
| $ | Odpovídá vzoru na konci řetězce | /com$/ odpovídá guru99.com, yahoo.com atd. |
| * | Odpovídá nule nebo více předchozím znakům | /com*/ odpovídá počítači, komunikaci atd. |
| + | Vyžaduje, aby se předchozí znak(y) objevily alespoň jednou | /yah+oo/ odpovídá yahoo |
| \ | Používá se k escapování metaznaků | /yahoo+\.com/ považuje tečku za doslovnou hodnotu |
| [...] | Třída postavy | /[abc]/ odpovídá a, b nebo c |
| AZ | Odpovídá malým písmenům | /az/ odpovídá cool, happy atd. |
| AZ | Odpovídá velkým písmenům | /AZ/ odpovídá CO, JAK, PROČ atd. |
| 0-9 | Odpovídá libovolnému číslu mezi 0 a 9 | /0-4/ odpovídá 0,1,2,3,4 |
Výše uvedený seznam uvádí pouze nejběžněji používané metaznaky v regulárních výrazech.
Podívejme se nyní na poměrně složitý příklad, který ověřuje platnost e-mailové adresy.
<?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"; } ?>
Vysvětlení vzoru ověřování e-mailů
TADY,
- „/…/“ začíná a končí regulární výraz
- „^[a-zA-Z0-9._-]“ odpovídá jakýmkoli malým nebo velkým písmenům, číslicím mezi 0 a 9 a tečkám, podtržítkům nebo pomlčkám.
- „+@[a-zA-Z0-9-]“ odpovídá symbolu @ následovanému malými nebo velkými písmeny, číslicemi mezi 0 a 9 nebo pomlčkami.
- „+\.[a-zA-Z.]{2,5}$/“ nahrazuje tečku zpětným lomítkem a poté na konci řetězce vyhledává jakákoli malá nebo velká písmena s délkou znaku mezi 2 a 5.
Přejděte na URL http://localhost/phptuts/preg_match.php
Jak je vidět z výše uvedeného rozpisu, metaznaky jsou velmi účinné, pokud jde o porovnávání vzorů.




