Justi 1 de septiembre de 2008 a las 13.00
   Imprimir artículo
elWebmaster.com

Taller de PHP: Expresiones Regulares (2)


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 >>


Enviar a Del.icio.us Enviar a Meneame Enviar a Digg Enviar a Fresqui Enviar a Enchilame

Comentarios (12)

  1. Diego dice:

    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 😉

  2. Fernando dice:

    ¿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…

  3. hugo dice:

    gracias por el apoyo, me sera de gran utilidad

  4. Anselmo Benitez dice:

    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

  5. Juan Manuel dice:

    ¡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!

  6. Sergio Vega dice:

    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

  7. charlie dice:

    Hola:
    Felicitaciones por el curso PHP.
    Sin embargo, por mis limitaciones, estoy buscando ayuda para hacer un script php por una consulta mysql.

    Tengo una base de datos llamada bduno
    En ella hay una tabla llamada datosuno con los siguientes campos: id, nombre, apellido, sexo, edad, peso, altura
    Por definicion, en la tabla no habrá más de 14 registros.

    Lo que busco es un código php para que muestre (echo o print) por ejemplo todos los registros en los cuales sexo=m y edad=20.

    Lo del principio, por mis escasos conocimientos necesito que es código sea escrito en su totalidad, con puntos y comas ya que yo no se hacerlo.

    Muchas gracias,
    Charlie

  8. Justi dice:

    @charlie hola charlie, te agradeceria que leas todo el taller, ahi esta explicado perfectamente lo que queres hacer.

  9. Carlos dice:

    Has ejemplos con bucles, con contadores,con busquedas complejas, si tengo un listado de 1000 registros de nombres en excel o word como hago para pasarlo al php mediante Codigo para no star tipeando cada registro. GRACIAS BYE!! cs_strike84_7@hotmail.com agregame plz!

  10. Edgar Millan dice:

    Solo me queda decirte que en verdad es un excelente curso pues tiene la explicación suficiente como saber de que se trata php.

    Gracias
    Edgar
    México D.F

  11. Celin Pérez dice:

    El curso es excelente, muy explícito, lamentablemente solo llegue hasta la clase 32, ya esa página carga con errores y el enlace para la clase siguiente esta deshabilitado(no funciona), y tampoco me permite guardar esa página, le agradecería repara este enlace para poder seguir con las clases siguientes y me avisara a mi E-Mail, este venezolano de Caracas, su admirador, siente como cada día mejora más en el dominio de 1ero: la herramienta DreamWeaver con el Taller del mismo, y ahora 2do: El lenguaje PHP con este Taller…mi agradecimiento es por siempre….desde Caracas, Venezuela….

  12. Morton dice:

    Celín, ya fue reparado el enlace, muchas gracias por informarlo.

Deja tu opinión

© 2007 - 2008 elWebmaster.com | Powered by Wordpress | Diseño CSS y XHTML válido. | Algunos íconos basados en FamFamFam Mini
Acceder