PHP preg_match(): Reguliere expressies (Regex)
Wat is reguliere expressie in PHP?
Reguliere PHP-expressie ook bekend als regex zijn krachtige patroonvergelijkingsalgoritmen die in één enkele expressie kunnen worden uitgevoerd. Reguliere expressies gebruiken rekenkundige operatoren zoals (+,-,^) om complexe expressies te maken. Ze kunnen u helpen taken uit te voeren zoals het valideren van e-mailadressen, IP-adressen, enz.
Waarom reguliere expressies gebruiken?
- PHP Reguliere expressies vereenvoudigen het identificeren van patronen in stringgegevens door een enkele functie aan te roepen. Dit bespaart ons codeertijd.
- Bij het valideren van gebruikersinvoer zoals e-mailadressen, domeinnamen, telefoonnummers, IP-adressen,
- Markering van trefwoorden in zoekresultaten
- Bij het maken van een aangepaste HTML-sjabloon. Regex in PHP kan worden gebruikt om de sjabloontags te identificeren en deze te vervangen door daadwerkelijke gegevens.
Ingebouwde reguliere expressiefuncties in PHP
PHP heeft ingebouwde functies waarmee we met reguliere functies kunnen werken, die we in deze tutorial over PHP Reguliere Expressies zullen leren. Laten we eens kijken naar de veelgebruikte reguliere expressiefuncties in PHP.
- preg_match() in PHP – deze functie wordt gebruikt om patroonmatching in PHP op een string uit te voeren. Het retourneert true als er een match wordt gevonden en false als er geen match wordt gevonden.
- preg_split() in PHP – deze functie wordt gebruikt om een patroonmatch op een string uit te voeren en de resultaten vervolgens in een numerieke array te splitsen
- preg_replace() in PHP – deze functie wordt gebruikt om een patroonmatch op een string uit te voeren en vervolgens de match te vervangen door de opgegeven tekst.
Hieronder vindt u de syntaxis voor een reguliere expressiefunctie zoals PHP preg_match(), PHP preg_split() of PHP preg_replace().
<?php function_name('/pattern/',subject); ?>
HIER,
- “function_name(…)” is PHP preg_match(), PHP preg_split() of PHP preg_replace().
- “/…/” De schuine strepen geven het begin en einde van onze PHP regex-testerfunctie aan
- “'/pattern/'” is het patroon dat we moeten matchen
- “onderwerp” is de tekstreeks waarmee moet worden vergeleken
Laten we nu kijken naar praktische voorbeelden die de bovenstaande PHP-regex-functies implementeren.
Preg_match() in PHP
Het eerste voorbeeld gebruikt de preg_match() in de PHP-functie om een eenvoudige patroonmatch uit te voeren voor het woord goeroe in een bepaalde URL.
De onderstaande code toont de implementatie van de preg_match() testerfunctie voor het bovenstaande voorbeeld.
<?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"; } ?>
Blader naar de URL http://localhost/phptuts/preg_match_simple.php
Laten we het deel van de code onderzoeken dat verantwoordelijk is voor onze uitvoer “preg_match('/guru/', $mijn_url)” HIER,
- “preg_match(…)” is de PHP regex-functie
- “'/guru/'” is het reguliere expressiepatroon dat moet worden vergeleken
- “$my_url” is de variabele die de tekst bevat waarmee moet worden vergeleken.
Het onderstaande diagram vat de bovenstaande punten samen
PHP Preg_split()
Laten we nu naar een ander voorbeeld kijken dat de preg_split() in de PHP-functie gebruikt.
We nemen een stringfrase en exploderen deze in een array; het patroon dat moet worden aangepast, is één enkele spatie.
De tekstreeks die in dit voorbeeld moet worden gebruikt, is "I Love Regular Expressions".
De onderstaande code illustreert de implementatie van het bovenstaande voorbeeld.
<?php $my_text="I Love Regular Expressions"; $my_array = preg_split("/ /", $my_text); print_r($my_array ); ?>
Blader naar de URL http://localhost/phptuts/preg_split.php
PHP Preg_replace()
Laten we nu kijken naar preg_replace() in PHP-functie dat een patroonmatch uitvoert en het patroon vervolgens vervangt door iets anders.
De onderstaande code zoekt naar het woord goeroe in a snaar.
Het vervangt het woord goeroe door het woord goeroe omgeven door CSS-code die de achtergrondkleur benadrukt.
<?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; ?>
Ervan uitgaande dat u het bestand preg_replace.php hebt opgeslagen, browser naar de URL http://localhost/phptuts/preg_replace.php
Metatekens voor reguliere expressies
De bovenstaande voorbeelden gebruikten heel basale patronen; metatekens stellen ons gewoon in staat om complexere patroonmatches uit te voeren, zoals het testen van de geldigheid van een e-mailadres. Laten we nu eens kijken naar de veelgebruikte metatekens.
Metateken | Beschrijving | Voorbeeld |
---|---|---|
. | Komt overeen met elk afzonderlijk teken, behalve een nieuwe regel | /./ komt overeen met alles dat één teken heeft |
^ | Komt overeen met het begin van of een tekenreeks / sluit tekens uit | /^PH/ komt overeen met elke tekenreeks die begint met PH |
$ | Komt overeen met het patroon aan het einde van het touwtje | /com$/ komt overeen met guru99.com,yahoo.com enz. |
* | Komt overeen met nul (0) of meer tekens | /com*/ komt overeen met computer, communicatie etc. |
+ | Vereist dat voorgaande tekens minstens één keer voorkomen | /ja+oo/ komt overeen met Yahoo |
\ | Wordt gebruikt om metakarakters te ontsnappen | /yahoo+\.com/ behandelt de punt als een letterlijke waarde |
[...] | Karakter klasse | /[abc]/ komt overeen met abc |
AZ | Komt overeen met kleine letters | /az/ komt overeen met cool, vrolijk etc. |
AZ | Komt overeen met hoofdletters | /AZ/ komt overeen met WAT, HOE, WAAROM etc. |
0-9 | Komt overeen met elk getal tussen 0 en 9 | /0-4/ komt overeen met 0,1,2,3,4 |
De bovenstaande lijst geeft alleen de meest gebruikte metatekens in reguliere expressies.
Laten we nu eens kijken naar een vrij complex voorbeeld waarin de geldigheid van een e-mailadres wordt gecontroleerd.
<?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"; } ?>
Uitleg van het patroon “[/^[a-zA-Z0-9._-]+@[a-zA-Z0-9-]+\.[a-zA-Z.]{2,5}$/] ”
HIER,
- “'/…/'” start en beëindigt de reguliere expressie
- “^[a-zA-Z0-9._-]” komt overeen met alle kleine letters en hoofdletters, cijfers tussen 0 en 9 en punten, onderstrepingstekens en koppeltekens.
- “+@[a-zA-Z0-9-]” komt overeen met het @-symbool gevolgd door kleine of hoofdletters, cijfers tussen 0 en 9 of streepjes.
- “+\.[a-zA-Z.]{2,5}$/” ontsnapt aan de punt met behulp van de backslash en matcht vervolgens eventuele kleine letters of hoofdletters met een tekenlengte tussen 2 en 5 aan het einde van de tekenreeks.
Blader naar de URL http://localhost/phptuts/preg_match.php
Zoals je kunt zien in het bovenstaande voorbeeld, zijn metatekens erg krachtig als het gaat om het matchen van patronen.
Samenvatting
- Een reguliere expressie of Regex in PHP is een algoritme voor patroonmatching
- Reguliere expressies zijn erg handig bij het uitvoeren van validatiecontroles, het maken van HTML-sjabloonsystemen die tags herkennen, enz.
- PHP heeft ingebouwde functies namelijk PHP preg_match(), PHP preg_split() en PHP preg_replace() die reguliere expressies ondersteunen.
- Metakarakters stellen ons in staat om complexe patronen te creëren