Según el manual de php.net es esto (Desconocia esta función o lo que sea tengo que estudiar muy interesante
gracias RAZACALA tendre que estudiar mocho mas
pero bueno nadie nace aprendido
)
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.
Código PHP:
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:
Código PHP:
<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.
Código PHP:
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:
Código PHP:
<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.
Código PHP:
preg_match_all("/\(? (\d{3})? \)? (?(1) [\-\s] ) \d{3}-\d{4}/x",
"Call 555-1212 or 1-800-555-1212", $phones);