logo

PHP preg_match()-functie

De preg_match() functie is een ingebouwde functie van PHP die een reguliere expressiematch uitvoert. Deze functie doorzoekt de tekenreeks op patroon en retourneert waar als het patroon bestaat, anders wordt onwaar geretourneerd.

Over het algemeen begint het zoeken vanaf het begin van de tekenreeksparameter $subject. De optionele parameter $offset wordt gebruikt om het zoeken vanaf de opgegeven positie te starten.

Syntaxis

 int preg_match (string $pattern, string $subject, array $matches, int $flags, int $offset) 

Opmerking: $offset is een optionele parameter die de positie specificeert waar de zoekopdracht moet beginnen.

Parameters

Deze functie accepteert vijf parameters, die hieronder worden beschreven:

patroon

Het is een parameter van het stringtype. Deze parameter bevat het patroon waarnaar moet worden gezocht als een tekenreeks.

onderwerp

Deze parameter bevat de invoertekenreeks waarin we naar patroon zoeken.

wedstrijden

Als de parameter Matches wordt opgegeven, bevat deze de zoekresultaten.

wedstrijden[0] - Het bevat de tekst, die overeenkomt met het volledige patroon.

wedstrijden[1] - Het bevat de tekst die overeenkomt met het eerste vastgelegde subpatroon tussen haakjes, enzovoort.

vlaggen

object van array in Java

De vlaggen kunnen de volgende vlaggen hebben, hieronder weergegeven:

    PREG_OFFSET_CAPTURE:Als deze vlag wordt doorgegeven in preg_match(), zal voor elke voorkomende match ook de bijbehorende stringoffset terugkeren.PREG_UNMATCHED_AS_NULL:Als deze vlag wordt doorgegeven in preg_match(), worden niet-overeenkomende subpatronen gerapporteerd als NULL, anders worden ze gerapporteerd als een lege string.

gecompenseerd

Standaard begint de zoekopdracht vanaf het begin van de parameter $subject. De offsetparameter wordt gebruikt om de plaats op te geven waar het zoeken zal beginnen. Het is een optionele parameter.

Retourtype

De functie preg_match() retourneert true als het patroon anders overeenkomt, en retourneert false.

Opmerking: als u alleen wilt controleren of een tekenreeks in een andere tekenreeks voorkomt, gebruik dan de functie preg_match() niet. Gebruik de functie strpos() omdat deze sneller zal zijn.

Voorbeelden

 <?php //initialize a variable of string type $site = 'javatpoint'; preg_match('/(java)(t)(point)/', $site, $matches, PREG_OFFSET_CAPTURE); //display the matches result print_r($matches); ?> 

Uitgang:

 Array ( [0] =&gt; Array ( [0] =&gt; javatpoint [1] =&gt; 0 ) [1] =&gt; Array ( [0] =&gt; java [1] =&gt; 0 ) [2] =&gt; Array ( [0] =&gt; t [1] =&gt; 4 ) [3] =&gt; Array ( [0] =&gt; point [1] =&gt; 5 ) ) 

We kunnen de bovenstaande uitvoer zien zoals hieronder weergegeven om deze beter te begrijpen.

 Array ( [0] =&gt; Array ( [0] =&gt; javatpoint [1] =&gt; 0 ) [1] =&gt; Array ( [0] =&gt; java [1] =&gt; 0 ) [2] =&gt; Array ( [0] =&gt; t [1] =&gt; 4 ) [3] =&gt; Array ( [0] =&gt; point [1] =&gt; 5 ) ) 

Voorbeelden: hoofdletterongevoelig zoeken

 <?php //initialize a variable of string type $website = 'JTP is a best online platform to learn.'; //case insensitive search for word jtp //The 'i' after pattern delimiter indicates case-insensitive search $res = preg_match('/jtp/i', $website, $matches); if ($res) { echo 'Pattern matched in string.</br>&apos;; print_r($matches); } else { echo &apos;Pattern not matched in string.&apos;; } ?&gt; 

Uitgang:

 Pattern matched in string. Array ( [0] =&gt; JTP ) 

Voorbeelden: door gebruik te maken van woordgrens ()

 <?php /* The  indicates the word boundary in the pattern. So, it matches only the distinct word like 'web', and words like 'coreweb' or ' webinar' do not match partially.*/ if (preg_match('/web/i', 'PHP is a web scripting language.')) { echo 'A match was found. </br>&apos;; } else { echo &apos;A match was not found. <br>&apos;; } if (preg_match(&apos;/web/i&apos;, &apos;PHP is a website scripting language.&apos;)) { echo &apos;A match was found.&apos;; } else { echo &apos;A match was not found.&apos;; } ?&gt; 

Uitgang:

 A match was found. A match was not found. 

Voorbeelden: haal de domeinnaam uit de URL

 

Uitgang:

C#-codevoorbeelden
 Domain name is: javatpoint.com 

Regex-syntaxis (reguliere expressie).

[abc] Komt overeen met één teken: a, b of c
[^abc] Komt overeen met elk afzonderlijk teken behalve a, b of c
[a-z] Komt overeen met elk afzonderlijk teken binnen het bereik a-z
[a-zA-Z] Elk afzonderlijk teken binnen het bereik a-z of A-Z
^ Begin van de lijn
$ Einde van de lijn
A Begin van de reeks
Met Einde van de reeks
. Elk enkel karakter
S Elk witruimteteken
S Elk teken dat geen witruimte bevat
D Elk cijfer
D Elk niet-cijfer
In Elk woordteken (letter, cijfer, onderstrepingsteken)
IN Elk niet-woord-teken
B Woordgrenscontrole
/?/ Start en beëindigt de reguliere expressie
(?) Leg alles tussen haakjes vast ()
(a|b) een of b
A? Nul of één van a
A* Nul of meer van a
een+ Eén of meer van een
een{3} Precies 3 van een
een{3,} 3 of meer van een
een{3,6} Tussen 3 en 6 van a
i Hoofdletterongevoelige controle
M Maak puntmatch-nieuwe regels
X Negeer witruimte in regex

Uitleg van het patroon '[^[a-zA-Z0-9._-] +@[a-zA-Z0-9-]+.[a-zA-Z.]{2,5}$/]'

    ''/?/''Het toont het begin en einde van de reguliere expressie.'[^[a-zA-Z0-9._-]'Het komt overeen met hoofdletters of kleine letters, cijfers tussen 0 en 9, punten, onderstrepingstekens of streepjes.'+@[a-zA-Z0-9-]'Het komt overeen met het @-symbool gevolgd door hoofdletters of kleine letters, cijfers tussen 0 en 9 of streepjes.'+.[a-zA-Z.]{2,5}$/'De punt wordt geëscaped met behulp van een backslash en komt vervolgens overeen met eventuele kleine letters of hoofdletters met een lengte tussen 2 en 5 aan het einde van de tekenreeks.