gafeman viciao2k3 logo viciao2k3
 
¿que estoy haciendo?
la gente pide a gritos que vuelva a bloguear (bueno en realidad 1) jejeje
 chica del dia  —  la novia de tu mejor amigo
 
Suscribete →  
482  fans y una planta carnivora
 
Viciao2k32007JulioViernes 13
1

switch y expresiones regulares

Publicado en PHP  —  1210 lecturas

la mayoría de cosas no te las enseñan cuando estas estudiando, ahí solo aprendes la base, todo lo demás te lo vas encontrando de casualidad, hace un tiempo encontré como hacer un switch con expresiones regulares

el siguiente ejemplo es una función para saber el tipo de fichero (canción, vídeo, imagen o texto) :

PHP:
  1. function descripcion_fichero($fichero){
  2. switch(true){
  3. case eregi('\.(wav|mp3|wma)$',$fichero);
  4. return 'Fichero de música';
  5. break;
  6. case eregi('\.(mpg|avi|rm)$',$fichero);
  7. return 'Fichero de video';
  8. break;
  9. case eregi('\.(jpg|bmp|png|gif)$',$fichero);
  10. return 'Fichero de imagen';
  11. break;
  12. case eregi('\.(txt|doc|pdf)$',$fichero);
  13. return 'Fichero de texto';
  14. break;
  15. default:
  16. return 'Fichero desconocido';
  17. break;
  18. }
  19. }

nota sobre la función:

si no se reconoce el tipo de fichero esta devolvera "Fichero desconocido"

si no usáramos la expresión regular...

  1. tendríamos que separar la extensión del nombre del fichero
  2. convertir el resultado a mayúsculas
  3. y luego pasarlo por el switch, quedando algo así:
PHP:
  1. function descripcion_fichero($fichero){
  2. //separar nombre fichero de la extension
  3. $posicion_punto = strrpos($fichero,'.');
  4. $extension = ($posicion_punto) ? strtoupper(substr($fichero,$posicion_punto+1)) : null;
  5.  
  6. switch($extension){
  7. case 'WAV':
  8. case 'MP3':
  9. case 'WMA':
  10. return 'Fichero de música';
  11. break;
  12. case 'MPG':
  13. case 'AVI':
  14. case 'RM':
  15. return 'Fichero de video';
  16. break;
  17. case 'JPG':
  18. case 'BMP':
  19. case 'PNG':
  20. case 'GIF':
  21. return 'Fichero de imagen';
  22. break;
  23. case 'TXT':
  24. case 'DOC':
  25. case 'PDF':
  26. return 'Fichero de texto';
  27. break;
  28. default:
  29. return 'Fichero desconocido';
  30. break;
  31. }
  32. }

¡Compartelo!    twitter   del.icio.us   webeame   meneame   stumbleupon   mr.wong   ?

  •  1  comentarios
  •  0  pings   —   0  trackbacks
 
Pings
  1. No hay pingbacks

Trackbacks
  1. No hay trackbacks
  1. Eregi es muy costoso en tiempo. Es mejor no usarlo, si hay otras funciones para extraer la extensión del archivo, cómo por ejemplo “pathinfo”


    function descripcion_fichero($fichero){

    $extension = strtolower(pathinfo($fichero,PATHINFO_EXTENSION));


    switch($extension){

    case ‘wav’: case ‘mp3′: case ‘wma’:

    return ‘Fichero de música’; break;

    case ‘mpg’: case ‘avi’: case ‘rm’:

    return ‘Fichero de video’; break;

    case ‘jpg’: case ‘bmp’: case ‘png’: case ‘gif’:

    return ‘Fichero de imagen’; break;

    case ‘txt’: case ‘doc’: case ‘pdf’:

    return ‘Fichero de texto’; break;

    default:

    return ‘Fichero desconocido’; break;

    }

    }


0-0

Código de conducta


Cualquier comentario que no cumpla una de las condiciones,
sera borrado sin previo aviso:
  1. Ser persona
  2. No insultar (A eso se le llama Trolear)
  3. No escribir el texto en mayusculas (Es lo mismo que gritar)
  4. No Spamear (ej. hablar de lo que comiste ayer...)
  5. Evitar comentarios del tipo soy primero, soy segundo, hijo de puta...
  6. Escribir el comentario en castellano
  7. Saber el día de la semana que naciste
  8. No deshonrar la ortografia del administrador

La sole

¡Participa en la discusión!





background by eboy