Cambiar la extensión de varios archivos con PHP
Suele suceder a muchos de mis clientes que usan OsCommerce y Zen-Cart que cuando suben las imágenes de los productos vÃa FTP la extensión de los archivos está en mayúsculas pero en la base de datos aparece el mismo archivo con la extensión en minúsculas. Resultado: la imagen no se puede encontrar. Algunos de ellos optan por la solución de renombrar las imágenes y volver a subirlas pero, dado que era muy incómodo, escribà este pequeño código que renombra las imágenes directamente en el servidor:
// Corregir las extensiones de los ficheros de imágenes. Cambiar las extensiones en mayúsculas por minúsculas.
$directorio_imagenes = 'images/';
if ($directorio = dir($directorio_imagenes))
{
while ($fichero = $directorio->read())
{
$info_fichero = pathinfo($fichero);
// Si la extensión no está en minúsculas ponerla en minúsculas
if (isset($info_fichero['extension']) && $info_fichero['extension']!=strtolower($info_fichero['extension']))
{
$info_fichero['basename_we'] = substr($info_fichero['basename'], 0, -(strlen($info_fichero['extension']) + ($info_fichero['extension'] == '' ? 0 : 1)));
rename(
$directorio_imagenes . $info_fichero['basename'],
$directorio_imagenes . $info_fichero['basename_we'] . '.' . strtolower($info_fichero['extension'])
);
echo '<br/>' . $info_fichero['basename'] . ' cambiado.';
}
}
}
El script busca en el directorio especificado los directorios con la extensión en mayúsculas y los cambia a minúsculas. La “magia” se hace con este if:
if (isset($info_fichero['extension']) && $info_fichero['extension']!=strtolower($info_fichero['extension']))
que compara la extensión del fichero con su versión en minúsculas. Esto detecta las extensiones como: .JPG, Jpg, jpG y las convierte a .jpg.
Un sencillo programita que puede ahorrarnos muchas horas de trabajo. Esta versión sólo busca en un único directorio, no serÃa muy difÃcil modificarlo para que busque también en los subdirectorios.


Marzo 23rd, 2007 at 5:56 pm
es muy bueno el articulo pero tambien queria ver si me podrias ayudar para saber como puedo cambiar las extensiones no solo de mayusculas a minusculas sino de una extension .pdf a .eml
Abril 12th, 2007 at 10:25 am
La parte que cambia la extensión del fichero es:
strtolower($info_fichero['extension'])
puedes sustituirla por, por ejemplo ‘eml’.
También tendrÃas que cambiar la parte:
$info_fichero['extension']!=strtolower($info_fichero['extension'])
por:
$info_fichero['extension']==’pdf’
Mayo 15th, 2007 at 8:48 pm
Comunico que he cambiado un archivo con extension tif a gif satisfactoriamente con el script mensionado anteriomente, pero lo que deseo es poder no solo renombrar el archivo, sino tambien convertir de tif a gif que es muy diferente renombrarlo, si alguien me puede ayudar se lo agradezco.
Mayo 15th, 2007 at 8:49 pm
Lo que deseo es convertir un archivo tif a gif. gracias