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 Regex er: Et regulært udtryk er et mønster, der beskriver tekst, og som lader én funktion validere, søge i eller transformere strenge.
  • preg_match: preg_match tester om et mønster vises i en streng og returnerer true ved første match, ideelt til validering.
  • ✂️ preg_split: preg_split opdeler en streng i et array, hvor mønsteret forekommer, f.eks. ved at opdele en sætning med mellemrum.
  • 🔁 preg_erstat: preg_replace finder alle matchende mønsterer og erstatter dem med ny tekst, hvilket er nyttigt til skabeloner og fremhævning.
  • 🔤 Metategn: Symboler som ., ^, $, * og + opbygger komplekse mønstre, for eksempel ved at forankre et match til starten eller slutningen.
  • 📧 E-mail-mønster: Tegnklasser og kvantifikatorer kombineres i et enkelt mønster, der kontrollerer, om en e-mailadresse er korrekt udformet.
  • 🤖 AI Assist: AI-værktøjer kan skrive en regex ud fra en almindelig beskrivelse og forklare eller fejlsøge et komplekst eksisterende mønster.

PHP regulære udtryk

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

Indbygget regulære udtryksfunktioner

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_split()

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

PHP Preg_replace()

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

PHP e-mailvalideringsmønster

Som du kan se af ovenstående oversigt, er metategn meget kraftfulde, når det kommer til at matche mønstre.

Ofte Stillede Spørgsmål

preg_match stopper ved det første match og udfylder $matches med det ene resultat. preg_match_all finder alle match i strengen og returnerer dem alle i et indlejret array, hvilket passer til f.eks.tracgentagne elementer.

Modifikatorer følger den afsluttende afgrænser og ændrer matchningsadfærden. i-modifikatoren gør mønsteret ufølsomt over for store og små bogstaver, m behandler hver linje separat for ^ og $, og s lader punktummet matche nye linjer, som i /guru/i.

Ombryd dele af mønsteret i parenteser for at oprette capture-grupper. Efter preg_match er det fulde match i $matches[0], og hver gruppe følger i $matches[1], $matches[2] og så videre.

Ja. Beskriv den tekst, du vil matche, f.eks. et telefonnummer eller datoformat, og AI kan producere mønsteret plus et eksempel på preg_match. Test det mod reelle og edge-case input, før du stoler på det.

Ja. Indsæt mønsteret, og AI kan opdele det token for token, forklare hvad hver del matcher, og påpege hvorfor det fejler på bestemte input, og derefter foreslå en rettet version.

Opsummer dette indlæg med: