Manuel PHP Précédent Suivant 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: 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";? b exemple: / b, div align=left ceci est un test / div exemple:, ceci est un test 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";? b exemple: / b, exemple: div align=left un test / div, un test 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. Exemple 1. 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);? Exemple 2. Recherche les couples de balises HTML (gourmand) ?php / / Cet exemple utilise les r eacute; f eacute;rences arri egrave;res (#92; #92;2). / / Elles indiquent agrave; l'analyseur qu'il doit trouver quelquechose qu'il / / a d eacute;j agrave; rep eacute;r eacute; un peu plus t ocirc;t / / le nombre 2 indique que c'est le deuxi egrave;me jeu de parenth egrave;ses / / capturante qui doit ecirc;tre utilis eacute; (ici, ([#92;w]+)). / / L'antislash est n eacute;cessaire ici, car la cha icirc;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 eacute;: ".$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";}? Voir aussi preg_match(), preg_replace() et preg_split(). Précédent Sommaire Suivant Niveau supérieur