Ver Mensaje Individual
  #1 (permalink)  
Antiguo 07/07/2012, 16:07
furoya
(Desactivado)
 
Fecha de Ingreso: noviembre-2002
Ubicación: Ciudad Autónoma de Buenos Aires
Mensajes: 2.367
Antigüedad: 21 años, 6 meses
Puntos: 317
Pregunta Cambiar extensión a minúscula.

Hola todos.

Necesito ayuda de alguien que sepa un poco de PHP.

En principio, me apareció un problema que (ahora descubro) es muy común : en una página web dejaron de verse varias imágenes.

Revisé que estuvieran en su carpeta, y que la ruta no se hubiese arruinado. Todo estaba bien, salvo por el detalle que la extensión *.jpg, en algunas era *.JPG.
Entonces supuse (y después confirmé) que PHP es case-sensitive. No tengo idea de cómo pasó de un día para el otro, pero unas 50 imágenes (salteadas) se cambiaron a mayúscula en la extensión.
Edité una a mano, y confirmé que ya aparecía.

El sitio está provisorio, hay que hacerlo de nuevo, pero mientras tanto se tiene que ver igual.
Así que empecé a buscar cómo "renombrar" los .jpg en la carpeta (de momento parece que es una solamente). El sitio no me provee una herramienta, así que empecé a buscar una solución en el código.

La quise hacer fácil en el htaccess, y encontré ForceType image/jpg, pero eso cambia la extensión. Y algunas son *.gif, o *.png. Lo descarté.

En PHP existe strtolower(), pero como como todo esto es "provisorio" y "para ayer", no voy a ponerme a estudiar PHP para escribir las líneas del condicional que me extraiga y convierta a minúsculas la extensión. (No sé si lo comenté, pero no entiendo nada de PHP).

Entonces hice algo que no me gusta, que es buscar algo pre-hecho, porque ya sé que es un drama común, y alguien lo tenía que haber resuelto.

Aquí es donde necesito ayuda. Encontré en http://nideaderedes.urlansoft.com/20...hivos-con-php/ un código que parece hacer lo que busco.


Código:
// 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.';

		}
	}
}
Mi pregunta es : ¿ven algo muy claro en ese código que sea una falla grave, que no pueda funcionar, o que arruine los documentos? Porque uno de los motivos por los que no traigo, ni recomiendo, y por lo general ni uso estos ejemplos es que no tienen "garantía". Casi siempre prefiero escribirlos yo; pero no voy a aprender PHP para esto.
Lo que voy a hacer, si no hay un riesgo evidente, es buscar donde se pone en el sitio, y probarlo. Ya esa búqueda me va a llevar un buen tiempo, pero supongo que será menos que confirmar si cada imagen va en mayúscula o minúscula y eventualmente reescribirla a mano.

Elegí ése, porque supongo que en realidad no cambia los archivos, sino que los "lee" y los "entrega" con la extensión cambiada. Si resulta que me inutiliza muchos más que usan mayúsculas, lo borro y que quede como estaba ... y empiezo el trabajo manual.

No voy al Foro de Ofertas de Trabajo, porque —insisto— es algo provisorio y no me van a aprobar el pago ni de eso. Cuando haya que rehacer la página, la historia será distinta.

Gracias.
furoya