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