PHP preg_match(): Regularni izrazi (Regex)

Što je regularni izraz u PHP-u?

PHP regularni izraz poznat i kao regex je moćan algoritam za usklađivanje uzoraka koji se može izvesti u jednom izrazu. Regularni izrazi koriste aritmetičke operatore kao što su (+,-,^) za stvaranje složenih izraza. Oni vam mogu pomoći da izvršite zadatke kao što je provjera valjanosti adresa e-pošte, IP adresa itd.

Zašto koristiti regularne izraze

  • PHP regularni izrazi pojednostavljuju prepoznavanje uzoraka u podacima niza pozivanjem jedne funkcije. To nam štedi vrijeme kodiranja.
  • Prilikom provjere korisničkih unosa kao što su adresa e-pošte, nazivi domena, telefonski brojevi, IP adrese,
  • Označavanje ključnih riječi u rezultatima pretraživanja
  • Prilikom izrade prilagođenog HTML predloška. Regex u PHP-u može se koristiti za identifikaciju oznaka predložaka i njihovu zamjenu stvarnim podacima.

Ugrađene funkcije regularnog izraza u PHP-u

PHP ima ugrađene funkcije koje nam omogućuju rad s regularnim funkcijama koje ćemo naučiti u ovom vodiču o PHP regularnim izrazima. Pogledajmo najčešće korištene funkcije regularnih izraza u PHP-u.

  • preg_match() u PHP-u – ova se funkcija koristi za izvođenje podudaranja uzorka u PHP-u na nizu. Vraća true ako se pronađe podudaranje i false ako podudaranje nije pronađeno.
  • preg_split() u PHP-u – ova se funkcija koristi za izvođenje podudaranja uzorka niza i potom dijeljenje rezultata u numerički niz
  • preg_replace() u PHP-u – ova se funkcija koristi za izvođenje podudaranja uzorka niza i zatim zamjenu podudaranja navedenim tekstom.

Ispod je sintaksa za funkciju regularnog izraza kao što je PHP preg_match(), PHP preg_split() ili PHP preg_replace().

<?php
function_name('/pattern/',subject);
?>

OVDJE,

  • “function_name(…)” je ili PHP preg_match(), PHP preg_split() ili PHP preg_replace().
  • “/…/” Kose crte označavaju početak i kraj naše PHP funkcije testera regularnih izraza
  • “'/uzorak/'” je obrazac koji trebamo uskladiti
  • "subject" je tekstualni niz s kojim se treba usporediti

Pogledajmo sada praktične primjere koji implementiraju gore navedene PHP regex funkcije.

Preg_match() u PHP-u

Prvi primjer koristi preg_match() u PHP funkciji za izvođenje jednostavnog podudaranja uzorka za riječ guru u danom URL-u.

Kôd u nastavku prikazuje implementaciju funkcije testera preg_match() za gornji primjer.

<?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";
}
?>

Dođite do URL-a http://localhost/phptuts/preg_match_simple.php

Ugrađene funkcije regularnog izraza

Ispitajmo dio koda odgovoran za naš izlaz “preg_match('/guru/', $my_url)” OVDJE,

  • “preg_match(…)” je funkcija PHP regularnog izraza
  • “'/guru/'” je uzorak regularnog izraza koji treba pronaći
  • “$my_url” je varijabla koja sadrži tekst koji treba usporediti.

Donji dijagram sažima gore navedene točke

PHP Preg_split()

Pogledajmo sada još jedan primjer koji koristi preg_split() u PHP funkciji.

Uzet ćemo string frazu i rastaviti je u niz; uzorak koji treba uskladiti je jedan razmak.

Tekstni niz koji će se koristiti u ovom primjeru je "Volim regularne izraze".

Kod u nastavku ilustrira implementaciju gornjeg primjera.

<?php

$my_text="I Love Regular Expressions";

$my_array  = preg_split("/ /", $my_text);

print_r($my_array );

?>

Dođite do URL-a http://localhost/phptuts/preg_split.php

PHP Preg_split()

PHP Preg_replace()

Pogledajmo sada preg_replace() u PHP funkcije koji izvodi podudaranje uzorka i zatim zamjenjuje uzorak nečim drugim.

Kod u nastavku traži riječ guru u a niz.

Zamjenjuje riječ guru riječju guru okruženom css kodom koji ističe boju pozadine.

<?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;

?>

Pod pretpostavkom da ste spremili datoteku preg_replace.php, preglednik na URL http://localhost/phptuts/preg_replace.php

PHP Preg_replace()

Metaznakovi regularnog izraza

Gornji primjeri koristili su vrlo osnovne uzorke; metaznakovi nam jednostavno omogućuju izvođenje složenijih podudaranja uzoraka kao što je testiranje valjanosti adrese e-pošte. Pogledajmo sada metaznakove koji se često koriste.

Metaznak Description Primjer
. Odgovara bilo kojem pojedinačnom znaku osim novom retku /./ odgovara bilo čemu što ima jedan znak
^ Odgovara početku ili nizu / isključuje znakove /^PH/ odgovara bilo kojem nizu koji počinje s PH
$ Odgovara uzorku na kraju niza /com$/ odgovara guru99.com,yahoo.com itd.
* Odgovara bilo kojoj nuli (0) ili više znakova /com*/ odgovara računalu, komunikaciji itd.
+ Zahtijeva da se prethodni znakovi pojave barem jednom /yah+oo/ odgovara yahoo
\ Koristi se za izbjegavanje meta znakova /yahoo+\.com/ tretira točku kao doslovnu vrijednost
[...] Klasa karaktera /[abc]/ odgovara abc
AZ Odgovara malim slovima /az/ odgovara cool, happy itd.
AZ Odgovara velikim slovima /AZ/ odgovara ŠTO, KAKO, ZAŠTO itd.
0-9 Odgovara bilo kojem broju između 0 i 9 /0-4/ odgovara 0,1,2,3,4

Gornji popis daje samo najčešće korištene metaznakove u regularnim izrazima.

Pogledajmo sada prilično složen primjer koji provjerava valjanost adrese e-pošte.

<?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";
}
?>

Objašnjavajući obrazac “[/^[a-zA-Z0-9._-]+@[a-zA-Z0-9-]+\.[a-zA-Z.]{2,5}$/] ”

OVDJE,

  • “'/…/'” počinje i završava regularni izraz
  • “^[a-zA-Z0-9._-]” odgovara svim malim ili velikim slovima, brojevima između 0 i 9 i točkama, podvlakama ili crticama.
  • "+@[a-zA-Z0-9-]" odgovara simbolu @ nakon kojeg slijede mala ili velika slova, brojevi između 0 i 9 ili crtice.
  • “+\.[a-zA-Z.]{2,5}$/” izbjegava točku koristeći obrnutu kosu crtu, a zatim odgovara svim malim ili velikim slovima s duljinom znaka između 2 i 5 na kraju niza.

Dođite do URL-a http://localhost/phptuts/preg_match.php

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

Kao što možete vidjeti iz gornjeg primjera raščlambe, metakarakteri su vrlo moćni kada se radi o podudaranju uzoraka.

rezime

  • Regularni izraz ili regularni izraz u PHP-u algoritam je podudaranja uzorka
  • Regularni izrazi vrlo su korisni prilikom izvođenja provjera valjanosti, stvaranja sustava HTML predložaka koji prepoznaju oznake itd.
  • PHP ima ugrađene funkcije PHP preg_match(), PHP preg_split() i PHP preg_replace() koje podržavaju regularne izraze.
  • Metaznakovi nam omogućuju stvaranje složenih obrazaca