preg_grep
<<<
preg_match_all preg_match
>>>

6.88 Expressions régulières compatibles Perl
6 Index des fonctions
 Manuel PHP

Introduction
Pré-requis
Installation
Configuration à l'exécution
Types de ressources
Constantes Prédefinies
Exemples
options de recherche
syntaxe des masques
preg_grep
->preg_match_all
preg_match
preg_quote
preg_replace_callback
preg_replace
preg_split

6.88.11 preg_match_all()Expression régulière globale

[ Exemples avec preg_match_all ]   PHP 3>= 3.0.9, PHP 4

int  preg_match_all ( string   pattern , string   subject , array   matches , int   order )

preg_match_all analyse subject pour trouver l'expression pattern et met les résultats dans matches , dans l'ordre spécifié par order .

Après avoir trouvé un premier résultat, la recherche continue jusqu'à la fin de la chaîne.

order peut prendre une des deux valeurs suivantes :

    PREG_PATTERN_ORDER
    L'ordre est tel que $matches[0] est un tableau qui contient les résultats qui satisfont le masque complet, $matches[1] est un tableau qui contient les résultats qui satisfont la première parenthèse capturante, etc..
    
    <?php
      preg_match_all
    ("|<[^>]+>(.*)</[^>]+>|U", "<b>example: </b><div align=left>a test</div>", $out, PREG_PATTERN_ORDER);
      print
    $out[0][0].", ".$out[0][1]."&#92;n";
      print
    $out[1][0].", ".$out[1][1]."&#92;n";
    ?>
    Cet exemple va afficher :


    <b>exemple: </b>, <div align=left>ceci est un test</div>
    exemple: , ceci est un test

    Ainsi, $out[0] est un tableau qui contient les résultats qui satisfont le masque complet, et $out[1] est un tableau qui contient les balises entre > et <.
    PREG_SET_ORDER
    Les résultats sont classés de telle façon que $matches[0] contient la première série de résultat, $matches[1] contient la deuxième série de résultat, etc...
    
    <?php
      preg_match_all
    ("|<[^>]+>(.*)</[^>]+>|U",
                     
    "<b>exemple: </b><div align=left>un test</div>",
                     
    $out,
                     
    PREG_SET_ORDER);
      print
    $out[0][0].", ".$out[0][1]."&#92;n";
      print
    $out[1][0].", ".$out[1][1]."&#92;n";
    ?>
    Cet exemple va afficher :


    <b>exemple: </b>, exemple:
    <div align=left>un test</div>, un test

    Dans ce cas, $matches[0] est la première série de résultat, et $matches[0][0] contient le texte qui satisfait le masque complet, $matches[0][1] contient le texte de la première parenthèse capturante, etc... De même, $matches[1] contient le texte qui satisfait le masque complet, etc...

Si order est omis, PREG_PATTERN_ORDER est utilisé par défaut.

preg_match_all retourne le nombre de résultat qui satisfont le masque complet, ou FALSE en cas d'échec ou d'erreur.

Extraction de tous les numéros de téléphone d'un texte.

<?php
  preg_match_all
("/&#92;(?  (&#92;d{3})?  &#92;)?  (?(1)  [&#92;-&#92;s] ) &#92;d{3}-&#92;d{4}/x",
               
"Appelez 555-1212 ou 1-800-555-1212", $phones);
?>

Recherche les couples de balises HTML (gourmand)

<?php
// Cet exemple utilise les références arrières (&#92;&#92;2).
// Elles indiquent à l'analyseur qu'il doit trouver quelquechose qu'il
// a déjà repéré un peu plus tôt
// le nombre 2 indique que c'est le deuxième jeu de parenthèses
// capturante qui doit être utilisé (ici, ([&#92;w]+)).
//  L'antislash est nécessaire ici, car la chaîne est entre guillemets doubles
  
$html = "<B>Texte en gras</B><a href=salut.html>clique moi</?>
  preg_match_all ("
/(<([&#92;w]+)[?>]?>)(.*)(<&#92;/&#92;&#92;?>)/", $html, $matches);
  for ($i=0; $i< count($matches[0]); $i++) {
    echo "trouvé: ".$matches[0][$i]."&#92;n";
    echo "partie 1: ".$matches[1][$i]."&#92;n";
    echo "partie 2: ".$matches[3][$i]."&#92;n";
    echo "partie 3: ".$matches[4][$i]."&#92;n&#92;n";
  }
?>
Cet exemple va produire :

trouvé: <B>bold text</B>
partie 1: <B>
partie 2: Test en gras
partie 3: </B>
trouvé: <a href=salut.html>clique moi</a>
partie 1: <a href=salut.html>
partie 2: clique moi
partie 3: </a>

Voir aussi preg_match , preg_replace et preg_split .

<< preg_match_all >>
preg_grep Expressions régulières compatibles Perl preg_match