preg_match_all nos sirve para cuando queremos buscar algo en una cadena de texto, y queremos que nos devuelva eso que ha encontrado. Nos podría servir por ejemplo, para saber todas las imágenes que hay en una página web o sencillamente, para recoger fechas y cosas definidas desconocidas.
Sentencia:
<? preg_match_all($patron, $string, $salida, ($opciones)); ?>
Patron serán los filtros que pongamos para que busque dentro del string. Este patrón se expresa con expresiones regulares.
String es la cadena de texto en donde vamos a buscar lo que necesitamos.
Salida será la matriz final en la que tengamos los resultados de la búsqueda y algunos otros resultados.
Opciones será el parámetro que nos permita ordenar en el array de salida los elementos obtenidos (son opcionales). Por ejemplo:
<? $cadena = '18/01-85 26/01/92'; preg_match_all('/[0-9]{2}(\/|\-)[0-9]{2}(\/|\-)[0-9]{2}/', $cadena, $salida, PREG_PATTERN_ORDER); //Este script nos sirve para sacar las fechas y saber qué separador usan. echo $salida[0][0] . " y " . $salida[0][1]; echo "<br>"; echo $salida[1][0] . " y " . $salida[1][1]; echo "<br>"; echo $salida[2][0] . " y " . $salida[2][1]; ?>
Nos devuelve:
18/01-85 y 26/01/92
/ y /
- y /
El siguiente ejemplo:
<? $cadena = '18/01-85 26/01/92'; preg_match_all('/[0-9]{2}(\/|\-)[0-9]{2}(\/|\-)[0-9]{2}/', $cadena, $salida, PREG_SET_ORDER); //Solo cambia el patrón y lo de abajo echo $salida[0][0] . " y " . $salida[1][0]; echo "<br>"; echo $salida[0][1] . " y " . $salida[1][1]; echo "<br>"; echo $salida[0][2] . " y " . $salida[1][2]; ?>
Devuelve:
18/01-85 y 26/01/92
/ y /
- y /
preg_match lo usaremos para saber simplemente, si en una cadena de texto se encuentra lo que buscamos. Si hemos entendido preg_match_all, con este no deberia de haber ningún problema. Usa una sentencia igual (en los dos primeros parámetros) que preg_match_all:
<? preg_match_all($patron, $string) ?>
Usaremos un ejemplo para explicar su funcionamiento:
<? $cadena = '135hola842'; echo preg_match('/hola/', $cadena); ?>
Nos devuelve 1, porque lo ha encontrado. Si no lo hubiera encontrado nos habria devuelto 0.
preg_replace nos permite, a partir de una cadena dada, reemplazar, reordenar y cambiar datos de esta cadena de forma sencilla.
Su sentencia es:
<? preg_replace($patron, $sustitucion, $cadena) ?>
Patrón se expresa mediante Expresiones Regulares.
Sustitución es la cadena ordenada y reorganizada a la que dará resultado. Usaremos $N en donde N serán números indicadores de la posición de los patrones, por los que sustituiremos (con el ejemplo se ve mucho más fácil).
Cadena es la cadena de texto a la que realizaremos la edición.
<? $cadena = 'Enero 26, 1992'; $patron = '/(\w+) (\d+), (\d+)/i'; $sustitucion = 'Nací el $2 de $1 de $3'; echo preg_replace($patron, $sustitucion, $cadena); ?>
Devuelve: Nací el 26 de Enero de 1992