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

Vestavěné funkce regulárních výrazů

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_split()

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

PHP Preg_replace()

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

[/^[a-zA-Z0-9._-]+@[a-zA-Z0-9-]+\.[a-zA-Z.]{2,5}$/]

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