PHP preg_match(): Reguljära uttryck (Regex)

Vad är reguljärt uttryck i PHP?

PHP reguljära uttryck även kända som regex är kraftfulla mönstermatchningsalgoritmer som kan utföras i ett enda uttryck. Reguljära uttryck använder aritmetiska operatorer som (+,-,^) för att skapa komplexa uttryck. De kan hjälpa dig att utföra uppgifter som att validera e-postadresser, IP-adress etc.

Varför använda reguljära uttryck

  • PHP Reguljära uttryck förenklar identifiering av mönster i strängdata genom att anropa en enda funktion. Detta sparar oss kodningstid.
  • Vid validering av användarinmatning som e-postadress, domännamn, telefonnummer, IP-adresser,
  • Markera nyckelord i sökresultaten
  • När du skapar en anpassad HTML-mall. Regex i PHP kan användas för att identifiera malltaggarna och ersätta dem med faktiska data.

Inbyggda reguljära uttrycksfunktioner i PHP

PHP har inbyggda funktioner som gör att vi kan arbeta med vanliga funktioner som vi kommer att lära oss i denna handledning för PHP Regular Expressions. Låt oss titta på de vanligaste reguljära uttrycksfunktionerna i PHP.

  • preg_match() i PHP – den här funktionen används för att utföra mönstermatchning i PHP på en sträng. Den returnerar sant om en matchning hittas och falsk om en matchning inte hittas.
  • preg_split() i PHP – den här funktionen används för att utföra en mönstermatchning på en sträng och sedan dela upp resultaten i en numerisk matris
  • preg_replace() i PHP – den här funktionen används för att utföra en mönstermatchning på en sträng och sedan ersätta matchningen med den angivna texten.

Nedan finns syntaxen för en reguljär uttrycksfunktion som PHP preg_match(), PHP preg_split() eller PHP preg_replace().

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

HÄR,

  • "function_name(...)" är antingen PHP preg_match(), PHP preg_split() eller PHP preg_replace().
  • “/…/” De framåtriktade snedstreck anger början och slutet av vår PHP regex tester funktion
  • "'/pattern/'" är mönstret som vi måste matcha
  • "ämne" är textsträngen som ska matchas mot

Låt oss nu titta på praktiska exempel som implementerar ovanstående PHP-regex-funktioner.

Preg_match() i PHP

Det första exemplet använder funktionen preg_match() i PHP för att utföra en enkel mönstermatchning för ordet guru i en given URL.

Koden nedan visar implementeringen av preg_match() testerfunktionen för exemplet ovan.

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

Bläddra till URL:en http://localhost/phptuts/preg_match_simple.php

Inbyggda reguljära uttrycksfunktioner

Låt oss undersöka den del av koden som är ansvarig för vår produktion "preg_match('/guru/', $my_url)” HÄR,

  • "preg_match(...)" är PHP regex-funktionen
  • "'/guru/'" är det reguljära uttrycksmönstret som ska matchas
  • "$my_url" är variabeln som innehåller texten som ska matchas mot.

Diagrammet nedan sammanfattar punkterna ovan

PHP Preg_split()

Låt oss nu titta på ett annat exempel som använder preg_split() i PHP-funktionen.

Vi kommer att ta en strängfras och explodera den till en array; mönstret som ska matchas är ett enda utrymme.

Textsträngen som ska användas i det här exemplet är "Jag älskar reguljära uttryck".

Koden nedan illustrerar implementeringen av exemplet ovan.

<?php

$my_text="I Love Regular Expressions";

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

print_r($my_array );

?>

Bläddra till URL:en http://localhost/phptuts/preg_split.php

PHP Preg_split()

PHP Preg_replace()

Låt oss nu titta på preg_replace() i PHP-funktion som utför en mönstermatchning och sedan ersätter mönstret med något annat.

Koden nedan söker efter ordet guru i en sträng.

Det ersätter ordet guru med ordet guru omgivet av css-kod som framhäver bakgrundsfärgen.

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

?>

Förutsatt att du har sparat filen preg_replace.php, webbläsare till URL:en http://localhost/phptuts/preg_replace.php

PHP Preg_replace()

Reguljära uttrycksmetakaraktärer

Ovanstående exempel använde mycket grundläggande mönster; metatecken tillåter oss helt enkelt att utföra mer komplexa mönstermatchningar som att testa giltigheten av en e-postadress. Låt oss nu titta på de vanligaste metatecken.

Metatecken Systembeskrivningar Exempelvis
. Matchar alla enstaka tecken utom en ny rad /./ matchar allt som har ett enda tecken
^ Matchar början av eller sträng / exkluderar tecken /^PH/ matchar alla strängar som börjar med PH
$ Matchar mönstret i slutet av strängen /com$/ matchar guru99.com, yahoo.com Etc.
* Matchar alla noll (0) eller fler tecken /com*/ matchar dator, kommunikation etc.
+ Kräver att föregående tecken visas minst en gång /yah+oo/ matchar yahoo
\ Används för att undkomma meta-tecken /yahoo+\.com/ behandlar punkten som ett bokstavligt värde
[...] Karaktärsklass /[abc]/ matchar abc
AZ Matchar gemener /az/ matchar cool, glad osv.
AZ Matchar versaler /AZ/ matchar VAD, HUR, VARFÖR osv.
0-9 Matchar valfritt tal mellan 0 och 9 /0-4/ matchar 0,1,2,3,4

Listan ovan ger bara de vanligaste metatecken i reguljära uttryck.

Låt oss nu titta på ett ganska komplicerat exempel som kontrollerar giltigheten av en e-postadress.

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

Förklara mönstret "[/^[a-zA-Z0-9._-]+@[a-zA-Z0-9-]+\.[a-zA-Z.]{2,5}$/] ”

HÄR,

  • "'/.../'" startar och avslutar det reguljära uttrycket
  • "^[a-zA-Z0-9._-]" matchar alla gemener eller versaler, siffror mellan 0 och 9 och punkter, understreck eller streck.
  • "+@[a-zA-Z0-9-]" matchar @-symbolen följt av små eller stora bokstäver, siffror mellan 0 och 9 eller bindestreck.
  • “+\.[a-zA-Z.]{2,5}$/” undviker punkten med omvänt snedstreck och matchar sedan alla gemener eller versaler med en teckenlängd mellan 2 och 5 i slutet av strängen.

Bläddra till 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 från exemplet ovan är metatecken väldigt kraftfulla när det kommer till matchande mönster.

Sammanfattning

  • Ett reguljärt uttryck eller Regex i PHP är en mönstermatchningsalgoritm
  • Reguljära uttryck är mycket användbara när du utför valideringskontroller, skapar HTML-mallsystem som känner igen taggar etc.
  • PHP har inbyggda funktioner nämligen PHP preg_match(), PHP preg_split() och PHP preg_replace() som stöder reguljära uttryck.
  • Metakaraktärer tillåter oss att skapa komplexa mönster