Foros del Web » Programando para Internet » PHP »

numerar archivo con funcion recursiva

Estas en el tema de numerar archivo con funcion recursiva en el foro de PHP en Foros del Web. Hace 2 horas que estoy con esto y no lo resuelvo. Necesito agregar el sufijo -2, -3 etc a un archivo si es que el ...
  #1 (permalink)  
Antiguo 15/09/2010, 12:14
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 1 mes
Puntos: 101
numerar archivo con funcion recursiva

Hace 2 horas que estoy con esto y no lo resuelvo. Necesito agregar el sufijo -2, -3 etc a un archivo si es que el original ya existe.

Código PHP:
function mover_juego_renombrado($nombre_original$nombre_nuevo){
    
    
$original "../originales_swf/".$nombre_original.".swf";

    if (!
is_writable ("../juegos/"))
        die (
"<h3>Error de escritura en la carpeta 'juegos'</h3>");
        
    if (
file_exists("../juegos/".$nombre_nuevo.".swf"))
        
$nombre_nuevo renombrar_juego($nombre_nuevo);
            
    if ( 
copy($original"../juegos/".$nombre_nuevo.".swf") )
        return 
$nombre_nuevo;
    else die(
"<h3>Error desconocido al mover juego renombrado.</h3>");

El intento es este:
$nombre_nuevo = renombrar_juego($nombre_nuevo);

Le di mil vueltas pero obtengo "nombre-2-3.swf" y cosas así.

Código PHP:
function renombrar_juego($nombre_nuevo){
    
    
// $check prueba sufijos -2, -3 etc en caso de que el archivo ya exista.
    
    
$_GLOBALS['indice']++;    
    
    if (
file_exists("../juegos/".$nombre_nuevo."-".$_GLOBALS['indice'].".swf"))
        
$nombre_nuevo renombrar_juego($nombre_nuevo);
    
    return 
$nombre_nuevo;


Última edición por mayid; 15/09/2010 a las 12:26
  #2 (permalink)  
Antiguo 15/09/2010, 12:28
Avatar de Perr0  
Fecha de Ingreso: mayo-2005
Ubicación: Santiago de Chile, Chile
Mensajes: 676
Antigüedad: 18 años, 10 meses
Puntos: 79
Respuesta: numerar archivo con funcion recursiva

funcionara esto, no lo he validado

Código PHP:
Ver original
  1. <?
  2. function renombrar_juego($nombre_nuevo){
  3.     list($n,$indice)=explode("-",$nombre_nuevo);
  4.     if(!$indice)
  5.     $indice=1;
  6.     else
  7.     $indice++;
  8.    
  9.     $nombre_nuevo=$nombre_nuevo."-".$indice;
  10.    
  11.     // $check prueba sufijos -2, -3 etc en caso de que el archivo ya exista.
  12.     if (file_exists("../juegos/".$nombre_nuevo.".swf"))
  13.         $nombre_nuevo = renombrar_juego($nombre_nuevo);
  14.      
  15.     return $nombre_nuevo;
  16. }  
  17. ?>
  #3 (permalink)  
Antiguo 15/09/2010, 12:32
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 1 mes
Puntos: 101
Respuesta: numerar archivo con funcion recursiva

Gracias. No puedo hacer explode("-",$nombre_nuevo) porque los nombres contienen muchos "-". Aunque no conozco el uso de list, y no descarto que la funcion sea buena.

Por ahora me conformo con esto, que lo que hace es obtener el último número de índice y anexarlo al nombre:

Código PHP:
Ver original
  1. function mover_juego_renombrado($nombre_original, $nombre_nuevo){
  2.    
  3.     $original = "../originales_swf/".$nombre_original.".swf";
  4.  
  5.     if (!is_writable ("../juegos/"))
  6.         die ("<h3>Error de escritura en la carpeta 'juegos'</h3>");
  7.        
  8.     if (file_exists("../juegos/".$nombre_nuevo.".swf"))
  9.         $nombre_nuevo = renombrar_juego($nombre_nuevo)."-".$_GLOBALS['indice'];
  10.            
  11.     if ( copy($original, "../juegos/".$nombre_nuevo.".swf") )
  12.         return $nombre_nuevo;
  13.     else die("<h3>Error desconocido al mover juego renombrado.</h3>");
  14. }

Es esta linea: $nombre_nuevo = renombrar_juego($nombre_nuevo)."-".$_GLOBALS['indice'];
  #4 (permalink)  
Antiguo 15/09/2010, 12:43
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: numerar archivo con funcion recursiva

¿Algo así?
Código PHP:
Ver original
  1. <?php
  2. $i = 1;
  3. while(true){
  4.     $file = 't-' . $i++ . '.txt';
  5.     if(!file_exists($file)){
  6.         touch($file);
  7.         break;
  8.     }
  9. }
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #5 (permalink)  
Antiguo 15/09/2010, 12:57
Avatar de Perr0  
Fecha de Ingreso: mayo-2005
Ubicación: Santiago de Chile, Chile
Mensajes: 676
Antigüedad: 18 años, 10 meses
Puntos: 79
Respuesta: numerar archivo con funcion recursiva

Corregido

Código PHP:
<?
function renombrar_juego($nombre_nuevo){
    
//debiera tomar el ultimo guion algo
    
$indice=array_pop(explode("-",$nombre_nuevo));
    if(!
$indice)
    
$indice=1;
    else
    
$indice++;
    
    
$nombre_nuevo=$nombre_nuevo."-".$indice;
    
    
// $check prueba sufijos -2, -3 etc en caso de que el archivo ya exista. 
    
if (file_exists("../juegos/".$nombre_nuevo.".swf")) 
        
$nombre_nuevo renombrar_juego($nombre_nuevo); 
     
    return 
$nombre_nuevo
}  
?>
  #6 (permalink)  
Antiguo 15/09/2010, 12:58
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 1 mes
Puntos: 101
Respuesta: numerar archivo con funcion recursiva

Me gustó el while :o)

Creo que va a andar.

Gracias por las herramientas! Yo ya estaba agotado.

( si, esto puede andar también: $indice=array_pop(explode("-",$nombre_nuevo)); )

Etiquetas: funcion
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:40.