preg_match_all -- Realizar una comparación global con una
expresión regular
Descripción
int preg_match_all ( string patron, string asunto, array coincidencias [, int banderas [, int desplazamiento]])
Busca el asunto por todas las
coincidencias con la expresión regular dada
en patron, y las coloca en
coincidencias en el orden especificado
por banderas.
Después de que la primera coincidencia es encontrada, las
búsquedas subsiguientes continúan desde el final de
la última coincidencia.
banderas puede ser una combinación
de las siguientes banderas (note que no tiene sentido
usar PREG_PATTERN_ORDER junto con
PREG_SET_ORDER):
PREG_PATTERN_ORDER
Ordena los resultados de tal forma que $coincidencias[0] es
una matriz con las coincidencias completas del patrón,
$coincidencias[1] es una matriz con las cadenas que coinciden
con el primer sub-patrón entre paréntesis, y
así sucesivamente.
<b>ejemplo: </b>, <div align=left>esta es una prueba</div>
ejemplo: , esta es una prueba
Así que $salida[0] contiene una matriz de cadenas
que coincidieron con el patrón completo, y
$salida[1] contiene una matriz de cadenas ubicadas entre
etiquetas.
PREG_SET_ORDER
Ordena los resultados de forma tal que $coincidencias[0] es
una matriz que contiene el primer conjunto de coincidencias,
$coincidencias[1] es una matriz con el segundo conjunto de
coincidencias, y así sucesivamente.
<b>ejemplo: </b>, ejemplo:
<div align="left">esta es una prueba</div>, esta es una prueba
En este caso, $coincidencias[0] es el primer conjunto de
coincidencias, y $coincidencias[0][0] tiene el texto que
coincidió con el patrón completo,
$coincidencias[0][1] tiene el texto que coincidió con
el primer sub-patrón y así sucesivamente. De
forma semejante, $coincidencias[1] es el segundo conjunto de
coincidencias, etc.
PREG_OFFSET_CAPTURE
Si es pasada esta bandera, para cada coincidencia que ocurre,
será devuelto también el desplazamiento de la
cadena adjunta. Note que esto modifica el valor de retorno,
convirtiéndolo en una matriz en donde cada elemento es
una matriz que consiste de la cadena que coincidió en
la posición 0, y su desplazamiento
de cadena al interior del asunto en la
posición 1. Esta bandera se
encuentra disponible a partir de PHP
4.3.0.
Si no se indica bandera alguna, se asume el uso
de PREG_PATTERN_ORDER.
Normalmente, la búsqueda comienza desde el inicio de la
cadena de asunto. El parámetro
opcional desplazamiento puede ser usado
para especificar el lugar alternativo desde donde debe iniciar la
búsqueda. Es equivalente a
pasar substr()($asunto, $desplazamiento)
a preg_match() en lugar de la cadena de
asunto. El parámetro desplazamiento
se encuentra disponible a partir de PHP 4.3.3.
Devuelve el número de coincidencias con el patrón
completo (que puede ser cero), o FALSE si ocurre un error.
Ejemplo 1. Obtener todos los números telefónicos de un
segmento de texto.
Ejemplo 2. Encontrar etiquetas HTML coincidentes (de forma
ambiciosa)
<?php
// El \\2 es un ejemplo de referencia hacia atras. Este le dice a pcre // que debe buscar el segundo conjunto de parentesis en la expresion // regular misma, que seria ([\w]+) en este caso. La barra invertida // extra es requerida ya que la cadena se encuentra entre comillas // dobles. $html = "<b>texto en negrilla</b><a href=hola.html>haga clic aqui</a>";
coincidencia: <b>texto en negrilla</b>
parte 1: <b>
parte 2: texto en negrilla
parte 3: </b>
coincidencia: <a href=hola.html>haga clic aqui</a>
parte 1: <a href=hola.html>
parte 2: haga clic aqui
parte 3: </a>