preg_match_all

(PHP 3>= 3.0.9, PHP 4 )

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:

<b>example: </b>, <div align=left>this is a test</div>
example: , this is a test

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:

<b>example: </b>, example:
<div align=left>this is a test</div>, this is a test

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().