PHP preg_match(): Reguliere expressies (Regex)

โšก Slimme samenvatting

Reguliere expressies in PHP zijn patroonherkenningstools waarmee tekst in รฉรฉn expressie kan worden gevalideerd, gesplitst en vervangen. Deze handleiding behandelt de kernfuncties preg_match, preg_split en preg_replace, legt de meest voorkomende metatekens uit en bouwt stap voor stap een werkend e-mailvalidatiepatroon op.

  • ๐Ÿงฉ Wat Regex is: Een reguliere expressie is een patroon dat tekst beschrijft, waardoor een functie tekenreeksen kan valideren, doorzoeken of transformeren.
  • โœ… preg_match: preg_match test of een patroon in een tekenreeks voorkomt en retourneert true bij de eerste overeenkomst, ideaal voor validatie.
  • โœ‚๏ธ preg_split: preg_split splitst een tekenreeks in een array op de plaatsen waar het patroon voorkomt, bijvoorbeeld door een zin te splitsen op spaties.
  • ๐Ÿ” preg_replace: preg_replace vindt elke overeenkomst van een patroon en vervangt deze door nieuwe tekst, wat handig is voor sjablonen en het markeren van tekst.
  • ๐Ÿ”ค Metapersonages: Symbolen zoals ., ^, $, *, en + vormen complexe patronen, bijvoorbeeld om een โ€‹โ€‹overeenkomst aan het begin of einde te verankeren.
  • ???? E-mailpatroon: Tekenklassen en kwantoren worden gecombineerd in รฉรฉn patroon dat controleert of een e-mailadres correct is opgebouwd.
  • ๐Ÿค– AI-assistentie: AI-tools kunnen een reguliere expressie schrijven op basis van een eenvoudige beschrijving en een complex bestaand patroon verklaren of debuggen.

PHP reguliere expressies

Wat is een reguliere expressie in PHP?

PHP reguliere expressiesReguliere expressies, ook wel bekend als regex, zijn een krachtig hulpmiddel voor patroonherkenning dat in รฉรฉn enkele expressie kan worden uitgevoerd. Reguliere expressies gebruiken speciale tekens zoals +, -, en ^ om complexe expressies te creรซren. Ze kunnen u helpen bij taken zoals het valideren van e-mailadressen, IP-adressen en meer.

Waarom reguliere expressies gebruiken?

  • PHP-reguliere expressies vereenvoudigen het identificeren van patronen in tekenreeksgegevens door slechts รฉรฉn functie aan te roepen. Dit bespaart ons programmeertijd.
  • Bij het valideren van gebruikersinvoer zoals e-mailadressen, domeinnamen, telefoonnummers en 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 expressies kunnen werken, iets wat we in deze tutorial zullen leren. Laten we eens kijken naar de meest gebruikte functies voor reguliere expressies in PHP.

  • De functie `preg_match()` in PHP wordt gebruikt om een โ€‹โ€‹patroon in een tekenreeks te herkennen. De functie retourneert `true` als er een overeenkomst wordt gevonden en `false` als er geen overeenkomst wordt gevonden.
  • De functie `preg_split()` in PHP wordt gebruikt om een โ€‹โ€‹patroonvergelijking uit te voeren op een tekenreeks en vervolgens de resultaten op te splitsen in een numerieke array.
  • 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 staat de syntaxis voor een reguliere expressiefunctie zoals preg_match(), preg_split() of preg_replace().

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

HIER,

  • โ€œfunction_name(โ€ฆ)โ€ is ofwel preg_match(), preg_split(), of preg_replace().
  • โ€œ/โ€ฆ/โ€ De schuine strepen geven het begin en einde van onze reguliere expressie aan.
  • โ€œ'/patroon/'โ€ is het patroon dat we moeten matchen.
  • โ€œonderwerpโ€ is de tekstreeks waarmee moet worden vergeleken

Laten we nu eens kijken naar praktische voorbeelden die de bovenstaande PHP-regex-functies implementeren.

Preg_match() in PHP

Het eerste voorbeeld gebruikt de functie preg_match() om een โ€‹โ€‹eenvoudige patroonvergelijking uit te voeren voor het woord 'guru' in een gegeven tekst. URL.

De onderstaande code toont de implementatie van de functie preg_match() 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 het URL http://localhost/phptuts/preg_match_simple.php

Ingebouwde reguliere expressiefuncties

Laten we het gedeelte van de code bekijken dat verantwoordelijk is voor onze uitvoer. preg_match('/guru/', $my_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.

PHP Preg_split()

Laten we nu eens kijken naar een ander voorbeeld waarin de functie preg_split() wordt 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 het URL http://localhost/phptuts/preg_split.php

PHP Preg_split()

PHP Preg_replace()

Laten we nu eens kijken naar de preg_replace() functie. 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 'guru' door het woord 'guru' omgeven door CSS-code die de achtergrondkleur accentueert.

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

?>

Als je het bestand preg_replace.php hebt opgeslagen, ga dan naar de betreffende locatie. URL http://localhost/phptuts/preg_replace.php

PHP Preg_replace()

Metatekens voor reguliere expressies

De bovenstaande voorbeelden gebruikten zeer eenvoudige patronen. Metatekens kunnen we complexere patroonvergelijkingen uitvoeren, zoals het controleren van de geldigheid van een e-mailadres. Laten we nu eens kijken naar de meest gebruikte 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 een tekenreeks of sluit tekens uit. /^PH/ komt overeen met elke tekenreeks die begint met PH
$ Komt overeen met een patroon aan het einde van de tekenreeks. /com$/ komt overeen met guru99.com, yahoo.com, enz.
* Komt overeen met nul of meer van de voorgaande tekens. /com*/ komt overeen met computer, communicatie etc.
+ De voorgaande tekens moeten minstens รฉรฉn keer voorkomen. /ja+oo/ komt overeen met Yahoo
\ Wordt gebruikt om metatekens te ontsnappen. /yahoo+\.com/ behandelt de punt als een letterlijke waarde
[...] Karakter klasse /[abc]/ komt overeen met a, b of c
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 dat de geldigheid van een e-mailadres controleert.

<?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 e-mailvalidatiepatroon

HIER,

  • โ€œ/โ€ฆ/โ€ begint en eindigt de reguliere expressie
  • โ€œ^[a-zA-Z0-9._-]โ€ komt overeen met alle kleine en hoofdletters, getallen tussen 0 en 9, en punten, underscores of streepjes.
  • โ€œ+@[a-zA-Z0-9-]โ€ komt overeen met het @-symbool gevolgd door kleine of hoofdletters, getallen tussen 0 en 9, of streepjes.
  • โ€œ+\.[a-zA-Z.]{2,5}$/โ€ ontsnapt aan de punt met behulp van de backslash en komt vervolgens overeen met alle kleine of hoofdletters met een tekenlengte tussen 2 en 5 aan het einde van de tekenreeks.

Blader naar het URL http://localhost/phptuts/preg_match.php

PHP-patroon voor e-mailvalidatie

Zoals je in bovenstaande analyse kunt zien, zijn metatekens erg krachtig als het gaat om het herkennen van patronen.

Veelgestelde vragen

`preg_match` stopt bij de eerste overeenkomst en vult `$matches` met dat ene resultaat. `preg_match_all` vindt elke overeenkomst in de tekenreeks en retourneert ze allemaal in een geneste array, wat geschikt is voor bijvoorbeeld...tracherhaalde items.

Modifiers volgen het afsluitende scheidingsteken en veranderen het overeenkomstgedrag. De i-modifier maakt het patroon hoofdletterongevoelig, m behandelt elke regel afzonderlijk voor ^ en $, en s zorgt ervoor dat de punt overeenkomt met nieuwe regels, zoals in /guru/i.

Plaats delen van het patroon tussen haakjes om vastleggingsgroepen te creรซren. Na preg_match bevindt de volledige overeenkomst zich in $matches[0] en elke groep volgt in $matches[1], $matches[2], enzovoort.

Ja. Beschrijf de tekst die je wilt matchen, zoals een telefoonnummer of datumformaat, en de AI kan het patroon plus een preg_match-voorbeeld genereren. Test het met echte en uitzonderlijke invoer voordat je er volledig op vertrouwt.

Ja. Plak het patroon en de AI kan het token voor token ontleden, uitleggen waar elk onderdeel mee overeenkomt en aangeven waarom het bij bepaalde invoer niet werkt, waarna een gecorrigeerde versie wordt voorgesteld.

Vat dit bericht samen met: