preg_match
(PHP 4, PHP 5)
preg_match — Expression rationnelle standard
Description
Analyse subject pour trouver l'expression qui correspond à pattern .
Liste de paramètres
- pattern
-
Le masque à chercher, sous la forme d'une chaîne de caractères.
- subject
-
La chaîne d'entrée.
- matches
-
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.
- flags
-
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.
- offset
-
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.
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). 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 ) )
Valeurs de retour
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.
Historique
Version | Description |
---|---|
4.3.3 | Le paramètre offset a été ajouté. |
4.3.0 | Le drapeau PREG_OFFSET_CAPTURE a été ajouté. |
4.3.0 | Le paramètre flags a été ajouté. |
Exemples
Example#1 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é.";
}
?>
Example#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 "Le mot a été trouvé.";
} else {
echo "Le mot n'a pas été trouvé.";
}
if (preg_match("/\bweb\b/i", "PHP est le meilleur langage de script du web.")) {
echo "Le mot a été trouvé.";
} else {
echo "Le mot n'a pas été trouvé.";
}
?>
Example#3 Lire un nom de domaine dans une URL
<?php
// repérer le nom de l'hôte dans l'URL
preg_match('@^(?:https://)?([^/]+)@i',
"https://www.php.net/index.html", $matches);
$host = $matches[1];
// 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";
?>
L'exemple ci-dessus va afficher :
Le nom de domaine est : php.net