PHP preg_match(): Regularni izrazi (Regex)

โšก Pametni saลพetak

Regularni izrazi u PHP-u su alati za usklaฤ‘ivanje uzoraka koji validiraju, dijele i zamjenjuju tekst u jednom izrazu. Ovaj vodiฤ pokriva osnovne funkcije preg_match, preg_split i preg_replace, objaลกnjava uobiฤajene metaznakove i korak po korak izraฤ‘uje funkcionalni uzorak validacije e-poลกte.

  • ๐Ÿงฉ ล to je Regex: Regularni izraz je obrazac koji opisuje tekst, omoguฤ‡ujuฤ‡i jednoj funkciji da provjerava, pretraลพuje ili transformira nizove znakova.
  • โœ… preg_match: preg_match provjerava pojavljuje li se uzorak u nizu i vraฤ‡a true pri prvom podudaranju, idealno za validaciju.
  • โœ‚๏ธ preg_split: preg_split razdvaja niz u niz gdje god se uzorak pojavljuje, kao ลกto je razdvajanje reฤenice na razmake.
  • ๐Ÿ” preg_replace: preg_replace pronalazi svako podudaranje uzorka i zamjenjuje ga novim tekstom, ลกto je korisno za izradu predloลพaka i isticanje.
  • ๐Ÿ”ค Metaznakovi: Simboli poput ., ^, $, * i + grade sloลพene obrasce, na primjer usidravajuฤ‡i podudaranje na poฤetak ili kraj.
  • ๐Ÿ“ง Uzorak e-poลกte: Klase znakova i kvantifikatori kombiniraju se u jedan obrazac koji provjerava je li adresa e-poลกte ispravno oblikovana.
  • ๐Ÿค– AI pomoฤ‡: Alati umjetne inteligencije mogu napisati regularni izraz iz jednostavnog opisa i objasniti ili otkloniti pogreลกke u sloลพenom postojeฤ‡em obrascu.

PHP regularni izrazi

ล to je regularni izraz u PHP-u?

PHP regularni izrazi, takoฤ‘er poznati kao regex, moฤ‡an su alat za usporedbu uzoraka koji se moลพe izvrลกiti u jednom izrazu. Regularni izrazi koriste posebne znakove poput +, - i ^ za stvaranje sloลพenih izraza. Mogu vam pomoฤ‡i u izvrลกavanju zadataka kao ลกto su provjera valjanosti adresa e-poลกte, IP adresa i joลก mnogo toga.

Zaลกto koristiti regularne izraze

  • PHP regularni izrazi pojednostavljuju prepoznavanje uzoraka u nizu podataka pozivanjem jedne funkcije. To nam ลกtedi vrijeme kodiranja.
  • Prilikom provjere korisniฤkih unosa kao ลกto su adrese e-poลกte, nazivi domena, telefonski brojevi i 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 izrazima, ลกto ฤ‡emo nauฤiti u ovom tutorialu. Pogledajmo ฤesto koriลกtene funkcije regularnih izraza u PHP-u.

  • preg_match() u PHP-u โ€“ ova se funkcija koristi za izvoฤ‘enje podudaranja uzoraka na nizu znakova. Vraฤ‡a vrijednost true ako se pronaฤ‘e podudaranje, a false ako se podudaranje ne pronaฤ‘e.
  • preg_split() u PHP-u โ€“ ova se funkcija koristi za pronalaลพenje uzorka na nizu znakova, a zatim za 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.

U nastavku slijedi sintaksa za funkciju regularnog izraza kao ลกto su preg_match(), preg_split() ili preg_replace().

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

OVDJE,

  • โ€žfunction_name(โ€ฆ)โ€œ je ili preg_match(), preg_split() ili preg_replace().
  • โ€ž/โ€ฆ/โ€œ kose crte oznaฤavaju poฤetak i kraj naลกeg regularnog izraza
  • โ€ž'/uzorak/'โ€ je uzorak koji trebamo pronaฤ‡i
  • "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 funkciju preg_match() za jednostavno pronalaลพenje uzorka za rijeฤ guru u zadanom URL.

Donji kod prikazuje implementaciju funkcije 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";
}
?>

Pregledajte URL http://localhost/phptuts/preg_match_simple.php

Ugraฤ‘ene funkcije regularnog izraza

Ispitajmo dio koda koji je 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.

PHP Preg_split()

Pogledajmo sada joลก jedan primjer koji koristi funkciju preg_split().

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

?>

Pregledajte URL http://localhost/phptuts/preg_split.php

PHP Preg_split()

PHP Preg_replace()

Pogledajmo sada preg_replace() 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, idite do URL http://localhost/phptuts/preg_replace.php

PHP Preg_replace()

Metaznakovi regularnog izraza

U gornjim primjerima koriลกteni su vrlo osnovni obrasci. Metaznakovi nam omoguฤ‡uju izvoฤ‘enje sloลพenijih podudaranja uzoraka, kao ลกto je testiranje valjanosti adrese e-poลกte. Pogledajmo sada ฤesto koriลกtene metaznakove.

Metaznak Description Primjer
. Odgovara bilo kojem pojedinaฤnom znaku osim novom retku /./ odgovara bilo ฤemu ลกto ima jedan znak
^ Odgovara poฤetku niza ili 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.
* Ne podudara se s nula ili viลกe prethodnih znakova /com*/ odgovara raฤunalu, komunikaciji itd.
+ Zahtijeva da se prethodni znak(ovi) pojave barem jednom /yah+oo/ odgovara yahoo
\ Koristi se za izbjegavanje metaznakova /yahoo+\.com/ tretira toฤku kao doslovnu vrijednost
[...] Klasa karaktera /[abc]/ odgovara a, b ili c
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ลกnjenje obrasca validacije e-poลกte

OVDJE,

  • "/โ€ฆ/" zapoฤinje i zavrลกava regularni izraz
  • โ€ž^[a-zA-Z0-9._-]โ€ odgovara bilo kojem malom ili velikom slovu, brojevima izmeฤ‘u 0 i 9 te 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}$/โ€ izbjegne toฤku pomoฤ‡u obrnute kose crte, a zatim na kraju niza pronaฤ‘e bilo koje malo ili veliko slovo s duljinom znaka izmeฤ‘u 2 i 5.

Pregledajte URL http://localhost/phptuts/preg_match.php

PHP obrazac za validaciju e-poลกte

Kao ลกto moลพete vidjeti iz gornje analize, metakarakteri su vrlo moฤ‡ni kada je u pitanju usklaฤ‘ivanje uzoraka.

Pitanja i odgovori

preg_match se zaustavlja na prvom podudaranju i popunjava $matches s tim jednim rezultatom. preg_match_all pronalazi svako podudaranje u nizu i vraฤ‡a ih sve u ugnijeลพฤ‘enom nizu, ลกto odgovara npr.tracponovljene stavke.

Modifikatori slijede zatvarajuฤ‡i razdjelnik i mijenjaju ponaลกanje podudaranja. Modifikator i ฤini uzorak neosjetljivim na velika i mala slova, m tretira svaki redak zasebno za ^ i $, a s omoguฤ‡uje toฤki da se podudara s novim redovima, kao u /guru/i.

Dijelove uzorka stavite u zagrade kako biste stvorili grupe za hvatanje. Nakon preg_match, cijelo podudaranje je u $matches[0], a svaka grupa slijedi u $matches[1], $matches[2] i tako dalje.

Da. Opiลกite tekst koji ลพelite pronaฤ‡i, kao ลกto je telefonski broj ili format datuma, a umjetna inteligencija moลพe generirati uzorak plus primjer preg_match. Testirajte ga u odnosu na stvarne i rubne ulaze prije nego ลกto se oslonite na njega.

Da. Zalijepite uzorak, a umjetna inteligencija ga moลพe raลกฤlaniti token po token, objasniti ฤemu se svaki dio podudara i istaknuti zaลกto ne uspijeva na odreฤ‘enom unosu, a zatim predloลพiti ispravljenu verziju.

Saลพmite ovu objavu uz: