preg_match
(PHP 3>= 3.0.9, PHP 4 )
preg_match -- Expression régulière standard
Description
int
preg_match ( string pattern, string subject [, array matches [, int flags]])
preg_match() analyse subject
pour trouver l'expression 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 .
preg_match() retourne le nombre de fois où le
masque pattern a été trouvé. Cela peut aller de
0 (pas de solutioon) à un 1 car preg_match() s'arrête
dès qu'il a trouvé une première solution. preg_match_all(),
au contraire, va continue jusqu'à la fin de la chaîne subject.
preg_match() retourne FALSE si une erreur survient.
Exemple 1. Extraction d'un numéro de page d'une chaîne.
<?php if (preg_match("/page\s+#(\d+)/i", "Aller à la page numéro 9.", $parts)) print "La page suivante est $parts[1]"; else print "Page introuvable."; ?>
|
|
Exemple 2. 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.")) { print "Un mot a été trouvé."; } else { print "Un mot n'a pas été trouvé."; } if (preg_match ("/\bweb\b/i", "PHP est le meilleur langage de script pour les webagency.")) { print "Un mot a été trouvé."; } else { print "Un mot n'a pas été trouvé."; } ?>
|
|
Exemple 3. 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"; ?>
|
|
Cet exemple va afficher :
Le nom de domaine est : php.net
Voir aussi
preg_match_all(),
preg_replace() et
preg_split().