Description
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.
.
Cet exemple va afficher :
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..
.
Cet exemple va afficher :
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
.
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"
;
}
?
|
|
Cet exemple va produire :
trouv eacute;: B bold text /B partie
1: B partie 2: Test en gras partie 3: /B trouv eacute;: 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(
)
.