preg_match_all

preg_match_all -- Realiza un completo emparejamiento de expresiones

Descripción

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

Busca en subject todos los emparejamientos de la expresión pattern y los pone en matches de la forma indicada por order .

Después de encontrar el primer emparejamiento , las subsiguientes búsquedas empiezan desde el punto del último casamiento .

order puede tener los siguientes valores :

PREG_PATTERN_ORDER

Los resultados serán devueltos de manera que $matches[ 0 ] es un array con el patrón de búsqueda completo , $matches[1 ] es una array de las cadenas casadas por el primer subpatrón que esté entre paréntesis y así sucesivamente .

 
preg_match_all(

 
"

 
|

 
[^

 
]

 
+

 
(.*

 
)

 
/

 
[^

 
]

 
+

 
|U"

 
,

 
"

 
b

 
example

 
:

 
/

 
b

 
div

 
align=left

 
this

 
is

 
a

 
test

 
/

 
div

 
"

 
,

 
$out

 
,

 
PREG_PATTERN_ORDER)

 
;

 
print

 
$out[0][0]

 
."

 
,

 
".$out[0][1]

 
."\n"

 
;

 
print

 
$out[1][0]

 
."

 
,

 
".$out[1][1]

 
."\n

 
"



Esta ejemplo dará como resultado: Así, $out[0] contiene el array con las cadena que casan completamente con el patrón y $out[1] con las cadenas que se encuentran entre los tags.

PREG_SET_ORDER

Los resultados son dados de manera que $matches[ 0 ] es una array del primer conjunto de emparejamientos , $matches[1 ] es un array de los segundos conjuntos de casamientos y así sucesivamente .

 
preg_match_all(

 
"

 
|

 
[^

 
]

 
+

 
(.*

 
)

 
/

 
[^

 
]

 
+

 
|U"

 
,

 
"

 
b

 
example

 
:

 
/

 
b

 
div

 
align=left

 
this

 
is

 
a

 
test

 
/

 
div

 
"

 
,

 
$out

 
,

 
PREG_SET_ORDER)

 
;

 
print

 
$out[0][0]

 
."

 
,

 
".$out[0][1]

 
."\n"

 
;

 
print

 
$out[1][0]

 
."

 
,

 
".$out[1][1]

 
."\n

 
"



Este ejemplo dará como resultado: En este caso, $matches[0] es el primer conjunto de emparejamientos y $matches[0][0] tiene el casamiento completo, $matches[0][1] el del primer subpatrón y así sucesivamente. Similarmente, $matches[1] es el segundo conjunto de emparejamientos, etc.



Si order no es dado , se asume PREG_PATTERN_ORDER .

Devuelve el número de casamientos completos , FALSE si no hubo o se produjo error .

Ejemplo 1 . Obtener los número de teléfonos de un texto .

 
preg_match_all(

 
"

 
/

 
\(

 
?

 
(\d{3})

 
?

 
\)

 
?

 
(

 
?(1

 
)

 
[\-\s

 
]

 
)

 
\d{3}-\d{4}

 
/

 
x"

 
,

 
"Call

 
555-1212

 
or

 
1-800-555-1212"

 
,

 
$phones)

 
;





Examina también preg_match( ) , preg_replace( ) y preg_split( ) .