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

⚡ Smart oppsummering

Regulære uttrykk i PHP er mønstersamsvarsverktøy som validerer, deler og erstatter tekst i et enkelt uttrykk. Denne gjennomgangen dekker kjernefunksjonene preg_match, preg_split og preg_replace, forklarer vanlige metategn og bygger et fungerende e-postvalideringsmønster trinn for trinn.

  • 🧩 Hva Regex er: Et regulært uttrykk er et mønster som beskriver tekst, slik at én funksjon kan validere, søke i eller transformere strenger.
  • preg_match: preg_match tester om et mønster vises i en streng og returnerer true ved første treff, ideelt for validering.
  • ✂️ preg_splitt: preg_split deler en streng inn i en matrise der mønsteret forekommer, for eksempel ved å dele en setning på mellomrom.
  • 🔁 preg_erstatt: preg_replace finner alle treff i et mønster og erstatter det med ny tekst, nyttig for malbygging og utheving.
  • 🔤 Metategn: Symboler som ., ^, $, * og + bygger komplekse mønstre, for eksempel å forankre et treff til starten eller slutten.
  • 📧 E-postmønster: Tegnklasser og kvantifikatorer kombineres til et enkelt mønster som kontrollerer om en e-postadresse er riktig formet.
  • 🤖 AI Assist: AI-verktøy kan skrive en regex fra en enkel beskrivelse og forklare eller feilsøke et komplekst eksisterende mønster.

PHP-regulære uttrykk

Hva er regulært uttrykk i PHP?

PHP regulære uttrykk, også kjent som regex, er et kraftig mønstermatchingsverktøy som kan utføres i et enkelt uttrykk. Regulære uttrykk bruker spesialtegn som +, - og ^ for å lage komplekse uttrykk. De kan hjelpe deg med å utføre oppgaver som å validere e-postadresser, IP-adresser og mer.

Hvorfor bruke regulære uttrykk

  • PHP-regulære uttrykk forenkler identifisering av mønstre i strengdata ved å kalle én enkelt funksjon. Dette sparer oss for kodetid.
  • Ved validering av brukerinndata som e-postadresser, domenenavn, telefonnumre og 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 regulære uttrykk, noe vi skal lære om i denne veiledningen. La oss se på de vanlige regulære uttrykksfunksjonene i PHP.

  • preg_match() i PHP – denne funksjonen brukes til å utføre mønstermatching på en streng. Den returnerer sann hvis det finnes et treff og usann hvis det ikke finnes et treff.
  • preg_split() i PHP – denne funksjonen brukes til å utføre et mønstermatch på en streng og deretter dele resultatene inn i en numerisk array.
  • 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 finner du syntaksen for en regulær uttrykksfunksjon som preg_match(), preg_split() eller preg_replace().

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

HER,

  • «funksjonsnavn(…)» er enten preg_match(), preg_split() eller preg_replace().
  • «/…/» skråstrekene angir begynnelsen og slutten av det regulære uttrykket vårt
  • «'/mønster/'» er mønsteret vi må matche
  • "emne" er tekststrengen som skal matches mot

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

Preg_match() i PHP

Det første eksemplet bruker preg_match()-funksjonen til å utføre et enkelt mønstertreff for ordet guru i en gitt URL.

Koden nedenfor viser implementeringen av preg_match()-funksjonen 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 http://localhost/phptuts/preg_match_simple.php

Innebygd regulære uttrykksfunksjoner

La oss undersøke den delen av koden som er ansvarlig for utdataene våre, preg_match('/guru/', $min_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.

PHP Preg_split()

La oss nå se på et annet eksempel som bruker preg_split()-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 http://localhost/phptuts/preg_split.php

PHP Preg_split()

PHP Preg_replace()

La oss nå se på preg_replace() 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, bla til URL http://localhost/phptuts/preg_replace.php

PHP Preg_replace()

Regulære uttrykks metakarakterer

Eksemplene ovenfor brukte svært grunnleggende mønstre. Metategn lar oss 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
^ Samsvarer med begynnelsen av en streng eller ekskluderer tegn /^PH/ samsvarer med en hvilken som helst streng som begynner med PH
$ Matcher et mønster på slutten av strengen /com$/ samsvarer med guru99.com, yahoo.com osv.
* Samsvarer med null eller flere av de foregående tegnene /com*/ matcher datamaskin, kommunikasjon osv.
+ Krever at foregående tegn (eller tegn) vises minst én gang /yah+oo/ samsvarer med yahoo
\ Brukes til å escape metategn /yahoo+\.com/ behandler prikken som en bokstavelig verdi
[...] Karakterklasse /[abc]/ samsvarer med a, b eller c
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 sjekker 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 e-postvalideringsmønsteret

HER,

  • «/…/» starter og avslutter det regulære uttrykket
  • «^[a-zA-Z0-9._-]» samsvarer med små eller store bokstaver, tall mellom 0 og 9, og prikker, understrek eller bindestreker.
  • «+@[a-zA-Z0-9-]» samsvarer med @-tegnet etterfulgt av små eller store bokstaver, tall mellom 0 og 9 eller bindestreker.
  • «+\.[a-zA-Z.]{2,5}$/» bruker omvendt skråstrek for å omgå punktum, og matcher deretter små eller store bokstaver med en tegnlengde mellom 2 og 5 på slutten av strengen.

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

PHP e-postvalideringsmønster

Som du kan se av oversikten ovenfor, er metategn svært kraftige når det gjelder å matche mønstre.

Spørsmål og svar

preg_match stopper ved det første treffet og fyller $matches med det ene resultatet. preg_match_all finner alle treff i strengen og returnerer dem alle i en nestet array, som passer for eksempeltracgjentatte elementer.

Modifikatorer følger det avsluttende skilletegnet og endrer samsvarsoppførselen. i-modifikatoren gjør mønsteret ufølsomt for store og små bokstaver, m behandler hver linje separat for ^ og $, og s lar punktumet matche linjeskift, som i /guru/i.

Pakk deler av mønsteret i parenteser for å lage fangstgrupper. Etter preg_match er hele treffet i $matches[0], og hver gruppe følger i $matches[1], $matches[2] og så videre.

Ja. Beskriv teksten du vil matche, for eksempel et telefonnummer eller datoformat, så kan AI produsere mønsteret pluss et preg_match-eksempel. Test det mot reelle og edge-case-inndata før du stoler på det.

Ja. Lim inn mønsteret, så kan AI-en dele det opp token for token, forklare hva hver del samsvarer med, og påpeke hvorfor det feiler på bestemte input, og deretter foreslå en korrigert versjon.

Oppsummer dette innlegget med: