Hola, hoy terminaremos con la clase de expresiones regulares. Para ello vamos a ver las funciones de php más utilizadas a la hora de realizar tareas con las mismas.
Entre ellas veremos preg_match (que busca una expresión en un string), preg_match_all (que en lugar de terminar en la primer expresión que encuentra, continua volcando en un array todas las coincidencias) y preg_replace (que busca una expresión regular y reemplaza el contenido de esa expresión por otro predefinido). ¡Comencemos!
preg_match
Busca una expresión en un string. La sintaxis es:
preg_match ( $patron, $string, $match );
$patron es el patrón como vimos la clase pasada, hay que ponerlo entre barras (/), igual no se preocupen, ya veremos un ejemplo.
$string es el lugar donde queremos buscar nuestro patrón.
$match es un parámetro opcional, no es necesario que este, si lo incluimos, ahà tendremos un vector con los resultados coincidentes con nuestro patrón, si no lo incluimos preg_match nos va a devolver true o false dependiendo si lo encontró o no.
Esta funcion (preg_match()) apenas encuentre una coincidencia va a dejar de correr.
<?
$string = "abcdef";
$patron = ‘/def/’;
if ( preg_match ( $patron, $string ) ) {
echo “coincide”;
} else {
echo “no coincide”;
}
?>
Otro ejemplo:
<?
$string = "abcdef";
$patron = ‘/def/’;
preg_match ( $patron, $string, $matches);
echo $matches[0];
?>
En este caso el echo $matches[0] nos va a imprimir def ya que el patrón estaba definido en el resultado, pero si cambiáramos el patrón por algo genérico
<?
$patron = "/^(.+)@/";
$string = “info@elwebmaster.com”;
preg_match( $patron, $string, $matches );
?>
Ahora en $matches vamos a tener un vector con $matches[0] = “info@” y en $matches[1] = “info”, esto se debe a que primero pone el resultado general, y segundo lo que esta dentro de los paréntesis (), si hubiésemos puestos varios paréntesis, tendrÃamos también un $matches[2], $matches[3], etc etc.
Siempre que quieran ver el contenido de un vector, con sus Ãndices para saber donde esta el contenido de cada cosa, pueden hacer
<?
var_dump( $matches );
?>
Y eso les va a imprimir en pantalla algo asi:
array(2) { [0] => string(5) “info@” [1] => string(4) “info” }
De esta forma pueden ir viendo todo el tiempo cual es el contenido de sus vectores.
preg_match_all
Esta función es similar a preg_match, pero en lugar de terminar en la primer expresión que encuentra, continua volcando en un array todas las coincidencias.
preg_match_all ( $patron, $string, $matches)
En este caso, el resultado del var_dump para $matches va a ser:
array(2) {
[0]=>
array(1) {
[0]=>
string(5) “info@”
}
[1]=>
array(1) {
[0]=>
string(4) “info”
}
}
preg_replace
Busca una expresión regular y reemplaza el contenido de esa expresión por otro predefinido.
preg_replace( $patron, $reemplazo, $sujeto )
En $patron vamos a poner el o los patrones a buscar, en $reemplazo, lo que queremos poner en el lugar del patrón y $sujeto va a ser el string original en el que queremos buscar el contenido para ser reemplazado.
Por ejemplo:
<?
$sujeto = "El taller de php de Justi es el mejor";
$patron = array( “/php/”, “/Justi/ );
$reemplazo = array( “dreamweaver”, “Thor” );
$nuevoTexto = preg_replace( $patron, $reemplazo, $sujeto );
echo $nuevoTexto;
?>
Ahora vamos a ver en pantalla “El taller de dreamweaver de Thor es el mejor”
Eso es todo por hoy, espero que hayan entendido todo el taller hasta este punto, ya que la clase que viene empezaremos con ¡Practica! Como crear nuestro propio blog.
| << CLASE ANTERIOR |
CLASE SIGUIENTE >> |








Jueves, 4 de Septiembre de 2008 a las 14.34
Ola Sabes me a gustado mucho el curso de hecho lo he leido casi todo solo me faltan las ultimas 3 clases
pero sabes q necesito, saber si me puedes ayudar lo que pasa es que me consegui un formulario en php que viene con un autoresponder incluido en el código php, pero lo que pasa es que quisiera agregarle mas opciones al formulario con cosas que aprendi en el curso y no se como hacerlo me pierdo en el codigo y tampoco se hacer el autoresponder de nuevo
, mira lo ideal seria si me pudieras agregar al msn y asi t paso el codigo haber si me puedes ayudar por favor que es mas o menos urgente para una pagina q toy haciendo:) aca esta mi msn: diego1258@hotmail.com
gracias
Jueves, 4 de Septiembre de 2008 a las 15.55
¿Cómo hago para que cuando un usuario pulse un boton no pueda pulsar otro mientrs no termine el proceso que solicitó o lo canele? y si desea cancelarlo ¿como hago para canelar por ejemplo una consulta de Select nombre, edad form clientes where edad > 20, en proceso…
Domingo, 21 de Septiembre de 2008 a las 15.06
gracias por el apoyo, me sera de gran utilidad
Jueves, 9 de Octubre de 2008 a las 10.47
Gracias por el curso. esta super completo.
Quisiera saber si es posible disponer de todo el curso en un soo archivo.
Gracias
Anselmo Benitez
Colombia
Jueves, 9 de Octubre de 2008 a las 17.50
¡Hola, Anselmo! Los talleres de elWebmaster se publican únicamente dentro del sitio. Pero eres libre de guardar las páginas, imprimirlas para leerlas mejor, etc.
¡Saludos!
Lunes, 24 de Noviembre de 2008 a las 17.23
Excelente material, estoy de cabeza para absorver lo más posible e ire incorporándolo a las aplicaciones que necesito implementar en mi sitio.
Sinceramente, muchas gracias,
Sergio Vega
Chile