PHP preg_match(): Regulære uttrykk (Regex)

Hva er regulært uttrykk i PHP?

PHP regulært uttrykk også kjent som regex er kraftige mønstertilpasningsalgoritmer som kan utføres i et enkelt uttrykk. Regulære uttrykk bruker aritmetiske operatorer som (+,-,^) for å lage komplekse uttrykk. De kan hjelpe deg med å utføre oppgaver som å validere e-postadresser, IP-adresse osv.

Hvorfor bruke regulære uttrykk

  • PHP Regulære uttrykk forenkler å identifisere mønstre i strengdata ved å kalle en enkelt funksjon. Dette sparer oss for kodetid.
  • Ved validering av brukerinndata som e-postadresse, domenenavn, telefonnumre, IP-adresser,
  • Utheve søkeord i søkeresultatene
  • Når du oppretter en tilpasset HTML-mal. Regex i PHP kan brukes til å identifisere malkodene og erstatte dem med faktiske data.

Innebygde regulære uttrykksfunksjoner i PHP

PHP har innebygde funksjoner som lar oss jobbe med vanlige funksjoner som vi vil lære i denne PHP Regular Expressions-opplæringen. La oss se på de vanlig brukte regulære uttrykksfunksjonene i PHP.

  • preg_match() i PHP – denne funksjonen brukes til å utføre mønstertilpasning i PHP på en streng. Det returnerer sant hvis et samsvar er funnet og usant hvis et samsvar ikke blir funnet.
  • preg_split() i PHP – denne funksjonen brukes til å utføre en mønstermatch på en streng og deretter dele opp resultatene i en numerisk matrise
  • preg_replace() i PHP – denne funksjonen brukes til å utføre en mønstermatch på en streng og deretter erstatte samsvaret med den spesifiserte teksten.

Nedenfor er syntaksen for en regulær uttrykksfunksjon som PHP preg_match(), PHP preg_split() eller PHP preg_replace().

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

HER,

  • "function_name(...)" er enten PHP preg_match(), PHP preg_split() eller PHP preg_replace().
  • "/.../" De fremadrettede skråstrekene angir begynnelsen og slutten av vår PHP regex tester-funksjon
  • "'/pattern/'" er mønsteret vi må matche
  • "emne" er tekststrengen som skal matches mot

La oss nå se på praktiske eksempler som implementerer de ovennevnte PHP-regex-funksjonene.

Preg_match() i PHP

Det første eksemplet bruker preg_match() i PHP-funksjonen for å utføre en enkel mønstermatch for ordet guru i en gitt URL.

Koden nedenfor viser implementeringen for preg_match() testerfunksjonen for eksemplet ovenfor.

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

Bla til URL-en http://localhost/phptuts/preg_match_simple.php

Innebygd regulære uttrykksfunksjoner

La oss undersøke den delen av koden som er ansvarlig for produksjonen vår "preg_match('/guru/', $my_url)" HER,

  • "preg_match(...)" er PHP regex-funksjonen
  • "'/guru/'" er det regulære uttrykksmønsteret som skal matches
  • "$my_url" er variabelen som inneholder teksten som skal matches mot.

Diagrammet nedenfor oppsummerer punktene ovenfor

PHP Preg_split()

La oss nå se på et annet eksempel som bruker preg_split() i PHP-funksjonen.

Vi tar en strengfrase og eksploderer den til en rekke; mønsteret som skal matches er en enkelt plass.

Tekststrengen som skal brukes i dette eksemplet er "Jeg elsker regulære uttrykk".

Koden nedenfor illustrerer implementeringen av eksemplet ovenfor.

<?php

$my_text="I Love Regular Expressions";

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

print_r($my_array );

?>

Bla til URL-en http://localhost/phptuts/preg_split.php

PHP Preg_split()

PHP Preg_replace()

La oss nå se på preg_replace() i PHP funksjon som utfører en mønstermatch og deretter erstatter mønsteret med noe annet.

Koden nedenfor søker etter ordet guru i en string.

Den erstatter ordet guru med ordet guru omgitt av css-kode som fremhever bakgrunnsfargen.

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

?>

Forutsatt at du har lagret filen preg_replace.php, nettleser til URL-en http://localhost/phptuts/preg_replace.php

PHP Preg_replace()

Regulære uttrykks metakarakterer

Eksemplene ovenfor brukte veldig grunnleggende mønstre; metategn lar oss ganske enkelt utføre mer komplekse mønstertreff, for eksempel teste gyldigheten til en e-postadresse. La oss nå se på de vanlige metategnene.

Metakarakter Tekniske beskrivelser Eksempel
. Matcher ethvert enkelt tegn bortsett fra en ny linje /./ samsvarer med alt som har et enkelt tegn
^ Tilsvarer begynnelsen av eller streng / ekskluderer tegn /^PH/ samsvarer med en hvilken som helst streng som begynner med PH
$ Matcher mønsteret på slutten av strengen /com$/ matcher guru99.com, yahoo.com Etc.
* Matcher alle null (0) eller flere tegn /com*/ matcher datamaskin, kommunikasjon osv.
+ Krever at foregående tegn vises minst én gang /yah+oo/ samsvarer med yahoo
\ Brukes til å unnslippe metakarakterer /yahoo+\.com/ behandler prikken som en bokstavelig verdi
[...] Karakterklasse /[abc]/ samsvarer med abc
AZ Matcher små bokstaver /az/ matcher kul, glad osv.
AZ Matcher store bokstaver /AZ/ samsvarer med HVA, HVORDAN, HVORFOR osv.
0-9 Matcher et hvilket som helst tall mellom 0 og 9 /0-4/ matcher 0,1,2,3,4

Listen ovenfor gir kun de mest brukte metategnene i regulære uttrykk.

La oss nå se på et ganske komplekst eksempel som kontrollerer gyldigheten til en e-postadresse.

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

Forklaring av mønsteret «[/^[a-zA-Z0-9._-]+@[a-zA-Z0-9-]+\.[a-zA-Z.]{2,5}$/] ”

HER,

  • "'/.../'" starter og avslutter det regulære uttrykket
  • «^[a-zA-Z0-9._-]» samsvarer med alle små eller store bokstaver, tall mellom 0 og 9 og prikker, understreker eller bindestreker.
  • "+@[a-zA-Z0-9-]" samsvarer med @-symbolet etterfulgt av små eller store bokstaver, tall mellom 0 og 9 eller bindestreker.
  • “+\.[a-zA-Z.]{2,5}$/” unnslipper prikken ved å bruke omvendt skråstrek og matcher deretter alle små eller store bokstaver med en tegnlengde mellom 2 og 5 på slutten av strengen.

Bla til URL-en http://localhost/phptuts/preg_match.php

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

Som du kan se fra eksemplet ovenfor, er metategn veldig kraftige når det kommer til matchende mønstre.

Sammendrag

  • Et regulært uttrykk eller regex i PHP er en mønstermatchalgoritme
  • Regulære uttrykk er veldig nyttige når du utfører valideringskontroller, lager HTML-malsystemer som gjenkjenner tagger osv.
  • PHP har innebygde funksjoner, nemlig PHP preg_match(), PHP preg_split() og PHP preg_replace() som støtter regulære uttrykk.
  • Metakarakterer lar oss lage komplekse mønstre