8.93 Expressions rationnelles compatibles Perl 
8 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
 
  | 
 
  8.93.12 preg_match()Expression rationnelle standard[ Exemples avec preg_match ]   PHP 3>= 3.0.9, PHP 4 , PHP 5 
mixed
 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
 .
     
 |