preg_match_all Expression rationnelle globale &reftitle.description; intfalsepreg_match_all stringpattern stringsubject arraymatches&null; intflags0 intoffset0 Analyse subject pour trouver l'expression pattern et met les résultats dans matches, dans l'ordre spécifié par flags. Après avoir trouvé un premier résultat, la recherche continue jusqu'à la fin de la chaîne. &reftitle.parameters; pattern Le masque à chercher, sous la forme d'une &string;. subject La chaîne d'entrée. matches Tableau contenant tous les résultats, dans un tableau multidimensionnel ordonné suivant le paramètre flags. flags Peut être une combinaison des valeurs suivantes (notez bien qu'il est incohérent d'utiliser PREG_PATTERN_ORDER avec PREG_SET_ORDER ) : 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. ]+>(.*)]+>|U", "exemple :
ceci est un test
", $out, PREG_PATTERN_ORDER); echo $out[0][0] . ", " . $out[0][1] . "\n"; echo $out[1][0] . ", " . $out[1][1] . "\n"; ?> ]]>
&example.outputs; exemple : ,
ceci est un test
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 <.
Si le masque contient des sous-masque nommés, $matches contiendra en plus des entrées qui auront pour clés les noms des sous-masques. Si le masque contient des sous-masques nommés en double, seul le sous-masque le plus à droite sera enregistré dans $matches[NAME]. foo)|(?bar)/', 'foo bar', $matches, PREG_PATTERN_ORDER ); print_r($matches['match']); ?> ]]> &example.outputs; [1] => bar ) ]]>
PREG_SET_ORDER Les résultats sont classés de telle façon que $matches[0] contient la première série de résultats, $matches[1] contient la deuxième, etc. ]+>(.*)]+>|U", "exemple :
ceci est un test
", $out, PREG_SET_ORDER); echo $out[0][0] . ", " . $out[0][1] . "\n"; echo $out[1][0] . ", " . $out[1][1] . "\n"; ?> ]]>
&example.outputs; exemple : , exemple :
ceci est un test
, ceci est un test ]]>
PREG_OFFSET_CAPTURE Si ce drapeau est passé, toutes les sous-chaînes qui satisfont le masque seront aussi identifiées par leur offset (en octets). Notez que cela modifie la valeur de matches en un tableau de tableau où chaque élément est un tableau contenant la sous-chaîne satisfaite à l'index 0 et l'index de celle-ci dans la chaîne subject à l'index 1. ]]> &example.outputs; Array ( [0] => Array ( [0] => foobarbaz [1] => 0 ) ) [1] => Array ( [0] => Array ( [0] => foo [1] => 0 ) ) [2] => Array ( [0] => Array ( [0] => bar [1] => 3 ) ) [3] => Array ( [0] => Array ( [0] => baz [1] => 6 ) ) ) ]]> PREG_UNMATCHED_AS_NULL Si ce drapeau est passé, les sous-masques non satisfait sont rapportés en tant que &null; ; sinon ils sont rapportés en tant que &string; vide.
Si order est omis, PREG_PATTERN_ORDER est utilisé par défaut.
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 (en octets). 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.
&reftitle.returnvalues; Retourne le nombre de résultats qui satisfont le masque complet,&return.falseforfailure;. &reftitle.errors; &pcre.pattern.warning; &reftitle.changelog; &Version; &Description; 7.2.0 PREG_UNMATCHED_AS_NULL est maintenant supporté pour le paramètre $flags. &reftitle.examples; Extraction de tous les numéros de téléphone d'un texte ]]> Recherche les couples de balises HTML (gourmand) texte en grascliquez moi"; preg_match_all("/(<([\w]+)[^>]*>)(.*?)(<\/\\2>)/", $html, $matches, PREG_SET_ORDER); foreach ($matches as $val) { echo "matched: " . $val[0] . "\n"; echo "part 1: " . $val[1] . "\n"; echo "part 2: " . $val[2] . "\n"; echo "part 3: " . $val[3] . "\n"; echo "part 4: " . $val[4] . "\n\n"; } ?> ]]> &example.outputs; texte en gras part 2: b part 3: texte en gras part 4: matched: cliquez moi part 1: part 2: a part 3: cliquez moi part 4: ]]> Utilisation d'un sous-masque nommé \w+): (?P\d+)/', $str, $matches); /* Alternative */ // preg_match_all('/(?\w+): (?\d+)/', $str, $matches); print_r($matches); ?> ]]> &example.outputs; Array ( [0] => a: 1 [1] => b: 2 [2] => c: 3 ) [name] => Array ( [0] => a [1] => b [2] => c ) [1] => Array ( [0] => a [1] => b [2] => c ) [digit] => Array ( [0] => 1 [1] => 2 [2] => 3 ) [2] => Array ( [0] => 1 [1] => 2 [2] => 3 ) ) ]]> &reftitle.seealso; Masques PCRE preg_quote preg_match preg_replace preg_split preg_last_error