PHP preg_match(): regulární výrazy (regex)
Co je regulární výraz v PHP?
Regulární výraz PHP také známý jako regex je výkonný algoritmus pro porovnávání vzorů, který lze provést v jediném výrazu. Regulární výrazy používají aritmetické operátory jako (+,-,^) k vytváření složitých výrazů. Mohou vám pomoci splnit úkoly, jako je ověřování e-mailových adres, IP adres atd.
Proč používat regulární výrazy
- Regulární výrazy PHP zjednodušují identifikaci vzorů v řetězcových datech voláním jediné funkce. To nám ušetří čas při kódování.
- Při ověřování uživatelského vstupu, jako je e-mailová adresa, názvy domén, telefonní čísla, 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 běžnými funkcemi, které se naučíme v tomto tutoriálu PHP Regular Expressions. Podívejme se na běžně používané funkce regulárních výrazů v PHP.
- preg_match() v PHP – tato funkce se používá k provádění porovnávání vzorů v PHP na řetězci. Vrací hodnotu true, pokud je nalezena shoda, a false, pokud shoda nalezena není.
- preg_split() v PHP – tato funkce se používá k provedení shody vzoru na řetězci a poté 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 funkce regulárního výrazu, jako je PHP preg_match(), PHP preg_split() nebo PHP preg_replace().
<?php function_name('/pattern/',subject); ?>
TADY,
- „název_funkce(…)“ je buď PHP preg_match(), PHP preg_split() nebo PHP preg_replace().
- „/…/“ Lomítka označují začátek a konec naší funkce PHP regex tester
- „'/pattern/'“ je vzor, který musíme spárovat
- „předmět“ je textový řetězec, se kterým se má porovnávat
Podívejme se nyní na praktické příklady, které implementují výše uvedené funkce PHP regex.
Preg_match() v PHP
První příklad používá funkci preg_match() v PHP k provedení jednoduché shody vzoru pro slovo guru v dané URL.
Níže uvedený kód ukazuje implementaci funkce preg_match() testeru 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 adresu URL http://localhost/phptuts/preg_match_simple.php
Pojďme prozkoumat část kódu zodpovědnou za náš výstup “preg_match('/guru/', $my_url)” TADY,
- „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.
Níže uvedený diagram shrnuje výše uvedené body
PHP Preg_split()
Podívejme se nyní na další příklad, který používá preg_split() ve funkci PHP.
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 adresu URL http://localhost/phptuts/preg_split.php
PHP Preg_replace()
Podívejme se nyní na preg_replace() v 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, prohlížeč na 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 jednoduše umožňují provádět složitější shody vzorů, jako je test platnosti e-mailové adresy. Podívejme se nyní 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 řetězce / vyloučí 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á jakékoli nule (0) nebo více 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í meta znaků | /yahoo+\.com/ považuje tečku za doslovnou hodnotu |
[...] | Třída postavy | /[abc]/ odpovídá abc |
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ý kontroluje 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 „[/^[a-zA-Z0-9._-]+@[a-zA-Z0-9-]+\.[a-zA-Z.]{2,5}$/] “
TADY,
- „'/…/'“ začíná a končí regulární výraz
- „^[a-zA-Z0-9._-]“ odpovídá všem malým nebo velkým písmenům, číslům mezi 0 a 9 a tečkám, podtržíkům nebo pomlčkám.
- „+@[a-zA-Z0-9-]“ odpovídá symbolu @ následovanému malými nebo velkými písmeny, čísly mezi 0 a 9 nebo pomlčkami.
- „+\.[a-zA-Z.]{2,5}$/“ uzavře tečku pomocí zpětného lomítka a poté porovná všechna malá nebo velká písmena s délkou znaku mezi 2 a 5 na konci řetězce.
Přejděte na adresu URL http://localhost/phptuts/preg_match.php
Jak můžete vidět z výše uvedeného příkladu rozdělení, metaznaky jsou velmi silné, pokud jde o párování vzorů.
Shrnutí
- Regulární výraz nebo Regex v PHP je algoritmus pro shodu se vzorem
- Regulární výrazy jsou velmi užitečné při provádění kontrol ověření, vytváření systémů šablon HTML, které rozpoznávají značky atd.
- PHP má vestavěné funkce konkrétně PHP preg_match(), PHP preg_split() a PHP preg_replace(), které podporují regulární výrazy.
- Metaznaky nám umožňují vytvářet složité vzory