logo

Fonction PHP preg_match()

La fonction preg_match() est une fonction intégrée de PHP qui effectue une correspondance d'expression régulière. Cette fonction recherche un modèle dans la chaîne et renvoie vrai si le modèle existe, sinon renvoie faux.

Généralement, la recherche commence au début du paramètre de chaîne $subject. Le paramètre facultatif $offset permet de lancer la recherche à partir de la position spécifiée.

Syntaxe

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

Remarque : $offset est un paramètre facultatif qui spécifie la position à partir de laquelle commencer la recherche.

Paramètres

Cette fonction accepte cinq paramètres, décrits ci-dessous :

modèle

Il s'agit d'un paramètre de type chaîne. Ce paramètre contient le modèle à rechercher sous forme de chaîne.

sujet

Ce paramètre contient la chaîne d'entrée dans laquelle nous recherchons un modèle.

allumettes

Si le paramètre matches est fourni, il contiendra les résultats de la recherche.

correspondances[0] - Il contiendra le texte correspondant au motif complet.

matchs[1] - Il contiendra le texte correspondant au premier sous-modèle entre parenthèses capturé, et ainsi de suite.

drapeaux

tableau dans les méthodes Java

Les drapeaux peuvent avoir les drapeaux suivants indiqués ci-dessous :

    PREG_OFFSET_CAPTURE :Si cet indicateur est passé dans preg_match(), pour chaque correspondance se produisant, le décalage de chaîne annexé sera également renvoyé.PREG_UNMATCHED_AS_NULL :Si cet indicateur est passé dans preg_match(), les sous-modèles sans correspondance seront signalés comme NULL, sinon ils seront signalés comme chaîne vide.

compenser

Par défaut, la recherche commence au début du paramètre $subject. Le paramètre offset permet de préciser l'endroit où débutera la recherche. C'est un paramètre facultatif.

Type de retour

La fonction preg_match() renvoie vrai si le modèle correspond, sinon elle renvoie faux.

Remarque : Si vous souhaitez uniquement vérifier si une chaîne est contenue dans une autre chaîne, n'utilisez pas la fonction preg_match(). Utilisez la fonction strpos() car elle sera plus rapide.

Exemples

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

Sortir:

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

Nous pouvons voir le résultat ci-dessus comme indiqué ci-dessous pour mieux le comprendre.

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

Exemples : recherche insensible à la casse

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

Sortir:

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

Exemples : en utilisant la limite de mot ()

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

Sortir:

 A match was found. A match was not found. 

Exemples : extraire le nom de domaine de l'URL

 

Sortir:

code de fibonacci java
 Domain name is: javatpoint.com 

Syntaxe Regex (expression régulière)

[abc] Correspond à un seul caractère : a, b ou c
[^abc] Correspond à n'importe quel caractère sauf a, b ou c
[a-z] Correspond à n'importe quel caractère dans la plage a-z
[a-zA-Z] Tout caractère unique dans la plage a-z ou A-Z
^ Début de ligne
$ Fin de ligne
UN Début de chaîne
Avec Fin de chaîne
. N'importe quel personnage
s N'importe quel caractère d'espacement
S Tout caractère autre qu'un espace
d N'importe quel chiffre
D Tout autre chiffre
Dans N'importe quel caractère de mot (lettre, chiffre, trait de soulignement)
DANS Tout caractère autre qu'un mot
 Vérificateur de limites de mots
/?/ Commence et termine l'expression régulière
(?) Capturez tout ce qui est entre parenthèses ()
(une|b) a ou B
un? Zéro ou un d'un
un* Zéro ou plusieurs d'un
un+ Un ou plusieurs d'un
un{3} Exactement 3 d'un
un{3,} 3 ou plus d'un
une{3,6} Entre 3 et 6 heures
je Vérification insensible à la casse
m Faire correspondre les points aux nouvelles lignes
X Ignorer les espaces dans les expressions régulières

Expliquer le modèle '[^[a-zA-Z0-9._-] +@[a-zA-Z0-9-]+.[a-zA-Z.]{2,5}$/]'

    ''/?/''Il montre le début et la fin de l'expression régulière.'[^[a-zA-Z0-9._-]'Il correspond à toutes les lettres majuscules ou minuscules, aux chiffres compris entre 0 et 9, aux points, aux traits de soulignement ou aux tirets.'+@[a-zA-Z0-9-]'Il correspond au symbole @ suivi des lettres majuscules ou minuscules, des chiffres entre 0 et 9 ou des tirets.'+.[a-zA-Z.]{2.5}$/'Le point est échappé à l'aide d'une barre oblique inverse, puis correspond à toutes les lettres minuscules ou majuscules d'une longueur comprise entre 2 et 5 à la fin de la chaîne.