PHP preg_match(): Regulære udtryk (Regex)
⚡ Smart opsummering
Regulære udtryk i PHP er mønstermatchningsværktøjer, der validerer, opdeler og erstatter tekst i et enkelt udtryk. Denne gennemgang dækker kernefunktionerne preg_match, preg_split og preg_replace, forklarer de almindelige metategn og opbygger et fungerende e-mailvalideringsmønster trin for trin.

Hvad er regulært udtryk i PHP?
PHP regulære udtryk, også kendt som regex, er et effektivt mønstermatchningsværktøj, der kan udføres i et enkelt udtryk. Regulære udtryk bruger specialtegn som +, - og ^ til at oprette komplekse udtryk. De kan hjælpe dig med at udføre opgaver som at validere e-mailadresser, IP-adresser og mere.
Hvorfor bruge regulære udtryk
- PHP regulære udtryk forenkler identifikation af mønstre i strengdata ved at kalde en enkelt funktion. Dette sparer os kodningstid.
- Ved validering af brugerinput såsom e-mailadresser, domænenavne, telefonnumre og IP-adresser
- Fremhævelse af søgeord i søgeresultater
- Når du opretter en tilpasset HTML-skabelon. Regex i PHP kan bruges til at identificere skabelontags og erstatte dem med faktiske data.
Indbyggede regulære udtryksfunktioner i PHP
PHP har indbyggede funktioner, der giver os mulighed for at arbejde med regulære udtryk, hvilket vi vil lære i denne vejledning. Lad os se på de almindeligt anvendte regulære udtryksfunktioner i PHP.
- preg_match() i PHP – denne funktion bruges til at udføre mønstermatchning på en streng. Den returnerer sand, hvis der findes et match, og falsk, hvis der ikke findes et match.
- preg_split() i PHP – denne funktion bruges til at udføre et mønstermatch på en streng og derefter opdele resultaterne i et numerisk array.
- preg_replace() i PHP – denne funktion bruges til at udføre et mønstermatch på en streng og derefter erstatte matchet med den angivne tekst.
Nedenfor er syntaksen for en regulær udtryksfunktion som f.eks. preg_match(), preg_split() eller preg_replace().
<?php
function_name('/pattern/',subject);
?>
HER,
- "function_name(…)" er enten preg_match(), preg_split() eller preg_replace().
- “/…/” skråstregene angiver begyndelsen og slutningen af vores regulære udtryk
- “'/mønster/'” er det mønster, vi skal matche
- "emne" er den tekststreng, der skal matches mod
Lad os nu se på praktiske eksempler, der implementerer ovenstående PHP regex-funktioner.
Preg_match() i PHP
Det første eksempel bruger funktionen preg_match() til at udføre et simpelt mønstermatch for ordet guru i en given URL.
Koden nedenfor viser implementeringen af funktionen preg_match() i ovenstående eksempel.
<?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"; } ?>
Gå til URL http://localhost/phptuts/preg_match_simple.php
Lad os undersøge den del af koden, der er ansvarlig for vores output, preg_match('/guru/', $min_url)HER,
- "preg_match(...)" er PHP regex-funktionen
- "'/guru/'" er det regulære udtryksmønster, der skal matches
- "$my_url" er den variabel, der indeholder teksten, der skal matches mod.
PHP Preg_split()
Lad os nu se på et andet eksempel, der bruger funktionen preg_split().
Vi vil tage en strengfrase og eksplodere den til et array; mønsteret, der skal matches, er et enkelt mellemrum.
Tekststrengen, der skal bruges i dette eksempel, er "Jeg elsker regulære udtryk".
Koden nedenfor illustrerer implementeringen af ovenstående eksempel.
<?php $my_text = "I Love Regular Expressions"; $my_array = preg_split("/ /", $my_text); print_r($my_array ); ?>
Gå til URL http://localhost/phptuts/preg_split.php
PHP Preg_replace()
Lad os nu se på preg_replace() PHP funktion der udfører en mønstermatch og derefter erstatter mønsteret med noget andet.
Koden nedenfor søger efter ordet guru i en streng.
Den erstatter ordet guru med ordet guru omgivet af CSS-kode, der fremhæver baggrundsfarven.
<?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; ?>
Forudsat at du har gemt filen preg_replace.php, skal du gå til URL http://localhost/phptuts/preg_replace.php
Regulære udtryks metakarakterer
Ovenstående eksempler brugte meget basale mønstre. Metategn giver os mulighed for at udføre mere komplekse mønstermatchninger, såsom at teste gyldigheden af en e-mailadresse. Lad os nu se på de almindeligt anvendte metategn.
| metategn | Beskrivelse | Eksempel |
|---|---|---|
| . | Matcher ethvert enkelt tegn undtagen en ny linje | /./ matcher alt, der har et enkelt tegn |
| ^ | Matcher starten af en streng eller udelukker tegn | /^PH/ matcher enhver streng, der starter med PH |
| $ | Matcher et mønster i slutningen af strengen | /com$/ matcher guru99.com, yahoo.com osv. |
| * | Matcher nul eller flere af de foregående tegn | /com*/ matcher computer, kommunikation osv. |
| + | Kræver, at det/de foregående tegn/tegn optræder mindst én gang | /yah+oo/ matcher yahoo |
| \ | Bruges til at undslippe metategn | /yahoo+\.com/ behandler prikken som en bogstavelig værdi |
| [...] | Karakter klasse | /[abc]/ matcher a, b eller c |
| AZ | Matcher små bogstaver | /az/ matcher cool, glad osv. |
| AZ | Matcher store bogstaver | /AZ/ matcher HVAD, HVORDAN, HVORFOR osv. |
| 0-9 | Matcher ethvert tal mellem 0 og 9 | /0-4/ matcher 0,1,2,3,4 |
Ovenstående liste giver kun de mest brugte metategn i regulære udtryk.
Lad os nu se på et ret komplekst eksempel, der kontrollerer gyldigheden af en e-mailadresse.
<?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 af e-mailvalideringsmønsteret
HER,
- "/…/" starter og afslutter det regulære udtryk
- “^[a-zA-Z0-9._-]” matcher alle små eller store bogstaver, tal mellem 0 og 9 samt prikker, understregninger eller bindestreger.
- “+@[a-zA-Z0-9-]” matcher @-tegnet efterfulgt af små eller store bogstaver, tal mellem 0 og 9 eller bindestreger.
- "+\.[a-zA-Z.]{2,5}$/" bruger et omvendt skråstreg til at erstatte punktummet og matcher derefter små eller store bogstaver med en tegnlængde mellem 2 og 5 i slutningen af strengen.
Gå til URL http://localhost/phptuts/preg_match.php
Som du kan se af ovenstående oversigt, er metategn meget kraftfulde, når det kommer til at matche mønstre.




