Fork me on GitHub

Miquel Camps Orteza

Soy programador web. Estoy especializado en desarrollo web (php, js). Estoy aprendiendo a desarrollar apps para iphone/ipad.
Organizo betabeers en Madrid.
Sobre mí     Metas     Hacks     Contactar     LinkedIn     Twitter    
Inicio

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]function descripcion_fichero($fichero){
switch(true){
case eregi(‘\.(wav|mp3|wma)$’,$fichero);
return ‘Fichero de música’;
break;
case eregi(‘\.(mpg|avi|rm)$’,$fichero);
return ‘Fichero de video’;
break;
case eregi(‘\.(jpg|bmp|png|gif)$’,$fichero);
return ‘Fichero de imagen’;
break;
case eregi(‘\.(txt|doc|pdf)$’,$fichero);
return ‘Fichero de texto’;
break;
default:
return ‘Fichero desconocido’;
break;
}
}[/php]

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]function descripcion_fichero($fichero){
//separar nombre fichero de la extension
$posicion_punto = strrpos($fichero,’.');
$extension = ($posicion_punto) ? strtoupper(substr($fichero,$posicion_punto+1)) : null;

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;
}
}[/php]

julio 13, 2007
Sigueme en twitter Suscribete por RSS Suscribete por email
Temas relacionados
Deja un comentario







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