Manuel PHP
Précédent |  | Suivant

# preg_match

(PHP 3>= 3.0.9, PHP 4 , PHP 5)

preg_match -- Expression régulière standard

## Description

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

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

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)) { echo "La page suivante est $parts[1]"; } else { echo "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.")) {
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é.";
}
?>`

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

Précédent | Sommaire | Suivant
preg_match_all | Niveau supérieur | preg_quote