• #Aplicaciones
  • #Bases de datos
  • #Dispositivos
  • #Hardware
  • #Inversión
  • #Marketing
  • #Programacion
  • #Sistemas
  • Renombrar archivos con PHP

    GuíasPHPProgramacion

    Para renombrar archivos mediante PHP podemos usar la función rename, que devuelve true si la operación ha tenido éxito y false si ha fracasado. Se usa del siguiente modo:

    rename ("viejo_nombre", "nuevo_nombre")

    La función Rename

    La función solamente era válida para distribuciones Linux, pero desde PHP 5.3.1 también funciona con los controladores de Windows.

    Debemos tener en cuenta que viejo_nombre hace referencia a la ruta completa del archivo que queremos renombrar y nuevo_nombre hace referencia también a la ruta completa del nuevo nombre. Si por ejemplo usamos:

    rename ("/directorio/nombreArchivo1.ext", "nombreArchivo2.ext");

    Si usamos el código anterior lo que ocurrirá será que el archivo localizado en «/directorio/archivo1.ext» se moverá al directorio de trabajo actual de PHP con el nombre «nombreArchivo2.ext«, por lo que es recomendable dar rutas absolutas como se muestra a continuación:

    rename ("/directorio/nombreArchivo1.ext", "/directorio2/nombreArchivo2.ext");

    ¿Qué ocurre si tenemos el archivo abierto?

    Debemos tener en cuenta que si hemos abierto algún manejador o instancia del archivo con PHP, deberemos cerrarlas todas antes de renombrar el archivo o tendremos un error de permisos. Así por ejemplo el siguiente código no renombrará el archivo correctamente:

    $archivoAbierto = fopen('./miArchivo.ext', 'r');
    rename( './miArchivo.ext', './miArchivo2.ext' );
    //El archivo no se renombrará

    Sin embargo, el siguiente código sí renombrará el archivo correctamente:

    $archivoAbierto = fopen('./miArchivo.ext', 'r');
    fclose($archivoAbierto);
    rename( './miArchivo.ext', './miArchivo2.ext' );
    //El archivo se renombrará correctamente

    Renombrar todos los archivos de un directorio

    En el siguiente ejemplo vamos a eliminar todos los caracteres numéricos de todos los archivos de un directorio.

    $directorio = opendir("./ruta/directorio);
    while ( $archivo = readdir($directorio)) {
        // Comprobamos que el archivo no sea un directorio
        if (!is_dir($archivo)) {
            
            $nuevoNombre = preg_replace('/[0-9]+/', '', $archivo);
            $rutaArchivo1 = "./ruta/".$archivo;
            $rutaArchivo2 = "./ruta/".$nuevoNombre;
            if (rename ($rutaArchivo1, $rutaArchivo2)) {
                
                echo ("El archivo ".$rutaArchivo1." se ha renombrado a ".$rutaArchivo2);
    
         } else {
             echo ("El archivo ".$rutaArchivo1." no se ha renombrado correctamente");
         }
    }

    Espero que os haya sido útil. Podéis encontrar más información en la documentación oficial de PHP. Si tenéis alguna duda podéis dejar un comentario.

    2 comentarios en “Renombrar archivos con PHP

    Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

    Ingeniero técnico en informática, actualmente trabajo como desarrollador web y programador de videojuegos.

    https://twitter.com/neeonez