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