Para limpiar el nombre, creo que este es un buen ejemplo aunque se le pueden agregar cosas al filtro:
Código PHP:
<?php
function filtro($nombre)
{
//Reemplazamos los . y espacios en blanco por _
$nombre = str_replace(" ", "_", $nombre);
$nombre = str_replace(".", "_", $nombre);
$nombre = str_replace("__", "_", $nombre);
return $nombre;
}
$archivo = "este. es.mi. archivo.jpg";
//Dividimos el nombre del archivo separando por .
$partes = explode(".", $archivo);
//cortamos la ultima porcion del array, que es la que corresponde a la extension
$extension = array_pop($partes);
//unimos el resto del array para formar el nombre sin la extension
$nombre = implode(".",$partes);
//Limpiamos el nombre y le unimos la extension
$nombre_limpio = filtro($nombre) . "." . $extension;
echo "<strong>Nombre Sin limpiar</strong> " . $archivo . "<br>";
echo "<strong>Nombre Limpio</strong> " . $nombre_limpio;
?>
Saludos.