preg_match_allExpression rationnelle globale
&reftitle.description;
intfalsepreg_match_allstringpatternstringsubjectarraymatches&null;intflags0intoffset0
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 :
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
]]>
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.0PREG_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 PCREpreg_quotepreg_matchpreg_replacepreg_splitpreg_last_error