switch y expresiones regulares

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

PHP      13 Julio, 2007      2395 lecturas      1 comentarios

  1. Jep Aribau - Consultor web

    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;

    }

    }









Additional comments powered by BackType