6.33 Expressions rationnelles compatibles Perl
6 Référence des fonctions
Manuel PHP
. Introduction . Pré-requis . Installation . Configuration à l'exécution . Types de ressources . Constantes pré-définies . Exemples . options de recherche . syntaxe des masques . preg_grep . preg_match_all ->preg_match . preg_quote . preg_replace_callback . preg_replace . preg_split
|
6.33.12 preg_match()Expression rationnelle standard[ Exemples avec preg_match ] PHP 3 >= 3.0.9, PHP 4, PHP 5
int
preg_match (
string
pattern
,
string
subject
,
array
matches
,
int
flags
,
int
offset
)
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 :
-
PREG_OFFSET_CAPTURE
-
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 .
Le paramètre
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îne
subject
, car
pattern
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.
Array
Trouve la chaîne "php" |
<?php // Le "i" après le délimiteur du pattern indique que la recherche ne sera pas sensible à la casse if (preg_match("/php/i", "PHP est le meilleur langage de script du web.")) { echo 'Un résultat a été trouvé.'; } else { echo 'Aucun résultat n\'a été trouvé.'; } ?>
|
Trouve le mot "web" |
<?php /* \b, dans le masque, indique une limite de mot, de façon à ce que le mot "web" uniquement soit repéré, et pas seulement des parties de mots comme dans "webbing" ou "cobweb" */ if (preg_match("/\bweb\b/i", "PHP est le meilleur langage de script du web.")) { echo 'Un mot a été trouvé.'; } else { echo 'Un mot n\'a pas été trouvé.'; }
if (preg_match("/\bweb\b/i", "PHP est le meilleur langage de script pour les webagency.")) { echo 'Un mot a été trouvé.'; } else { echo 'Un mot n\'a pas été trouvé.'; } ?>
|
Lire un nom de domaine dans une URL |
<?php // repérer le nom de l'hôte dans l'URL preg_match("/^(http:\/\/)?([^\/]+)/i", "http://www.php.net/index.html", $matches); $host = $matches[2];
// repérer les deux derniers segments du nom de l'hôte preg_match("/[^\.\/]+\.[^\.\/]+$/", $host, $matches); echo "Le nom de domaine est : ".$matches[0]."\n"; ?>
|
Voir aussi
preg_match_all
,
preg_replace
et
preg_split
.
|