Manuel PHP
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('@^(?:http://)?([^/]+)@i',
- "http://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 :
Notes
Remonter 
