preg_match() analyse subject
pour trouver l'expression qui correspond à pattern
.
Si matches
est fourni, il sera rempli par
les résultats de la recherche. $matches[0]
contiendra le
texte qui satisfait le masque complet, $matches[1]
contiendra
le texte qui satisfait la première parenthèse capturante,
etc.
Le paramètre flags
peut prendre l'une des valeurs
suivantes :
Si cette option est activée, toutes les sous-chaînes qui satisfont
le masque seront aussi identifiées par leur offset. Notez que cela
modifie le format de la valeur retournée , puisque chaque élément
de réponse devient un tableau contenant la sous-chaîne résultat,
à l'index 0 dans la chaîne subject
constant 1. Cette option a été ajoutée en PHP 4.3.0 .
flags
a été ajouté en
PHP 4.3.0 .
Normalement, la recherche commence au début de la chaîne
subject
. Le paramètre optionnel
offset
peut être utilisé pour spécifier
une position pour le début de la recherche.
Le paramètre offset
a été introduit
depuis la version 4.3.3 de PHP.
Note : Utiliser le paramètre
offset
ne revient pas à passer substr($subject, $offset) à preg_match_all() à la place de la chaînesubject
, carpattern
peut contenir des assertions comme ^, $ ou (?<=x). Lisez la documentation sur la fonction preg_match() pour des exemples. Comparez :
<?php
$subject = "abcdef";
$pattern = '/^def/';
preg_match($pattern, $subject, $matches, PREG_OFFSET_CAPTURE, 3);
print_r($matches);
?>L'exemple ci-dessus va afficher :
Array ( )avec cet exemple :
<?php
$subject = "abcdef";
$pattern = '/^def/';
preg_match($pattern, substr($subject,3), $matches, PREG_OFFSET_CAPTURE);
print_r($matches);
?>produira :
Array ( [0] => Array ( [0] => def [1] => 0 ) )
preg_match() retourne le nombre de fois où le
masque pattern
a été trouvé. Cela peut aller de
0 (pas de solution) à un 1 car preg_match() s'arrête
dès qu'elle a trouvé une première solution. preg_match_all(),
au contraire, va continuer jusqu'à la fin de la chaîne subject
.
preg_match() retourne FALSE si une erreur survient.
Astuce : N'utilisez pas preg_match() si vous voulez uniquement savoir si une chaîne est contenue dans une autre. Utilisez dans ce cas les fonctions strpos() ou strstr(), qui sont beaucoup plus rapides.
Exemple 3. Lire un nom de domaine dans une URL
L'exemple ci-dessus va afficher :
|
Voir aussi preg_match_all(), preg_replace() et preg_split().
Précédent | Sommaire | Suivant |
preg_match_all | Niveau supérieur | preg_quote |