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
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_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
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
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