PHP preg_match(): Reguliere expressies (Regex)

Wat is reguliere expressie in PHP?

Reguliere PHP-expressie ook bekend als regex zijn krachtige algoritmen voor patroonvergelijking die in één enkele expressie kunnen worden uitgevoerd. Reguliere expressies gebruiken rekenkundige operatoren zoals (+,-,^) om com te makenplex uitdrukkingen. Zij kunnen u helpen bij het uitvoeren van taken zoals het valideren van email adressen, IP-adres 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 email adres, 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

Ingebouwde reguliere expressiefuncties

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.

In onderstaand schema zijn bovenstaande punten samengevat

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

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

PHP Preg_replace()

Metatekens voor reguliere expressies

In de bovenstaande voorbeelden werden zeer eenvoudige patronen gebruikt; metatekens stellen ons eenvoudigweg in staat meer com uit te voerenplex patroonovereenkomsten zoals het testen van de geldigheid van een email adres. Laten we nu eens kijken naar de veelgebruikte metatekens.

Metateken Omschrijving 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 redelijk complex voorbeeld dat de geldigheid van een e controleertmail adres.

<?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 kleine letters of hoofdletters, cijfers tussen 0 en 9 en punten, onderstrepingstekens of streepjes.
  • “+@[a-zA-Z0-9-]” komt overeen met het @-symbool gevolgd door kleine letters 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

[/^[a-zA-Z0-9._-]+@[a-zA-Z0-9-]+\.[a-zA-Z.]{2,5}$/]

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

Samengevat

  • 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.
  • Metatekens stellen ons in staat com te creërenplex patronen