Nunca va a encontrar la extension asi:
Código php:
Ver original$filename = substr($filename, -20); // Que pasa si el nombre de archivo tiene menos de 20 caracteres?
// Consigue la extension antes de recortar el nombre
// Compara con la extension:
if($extension == 'jpg' || $extension == 'gif') // Agrega las necesarias
// Primero reemplaza los espacios, como lo tienes en tu script
// Si el nombre de archivo es demasiado largo:
// Forza la longitud y agrega la extension nuevamente
$filename = substr($filename, 0, 16) . ".$extension"; }