Visualizzazione risultati 1 fino 10 di 10

Discussione: script rinomina

  1. #1
    Guest

    Predefinito script rinomina

    Ciao a tutti...

    io ho un problema... io da un precedente script mi ricavo una variabile $cartella che contiene il nome di una sottocartella inserita nella cartella archivio...

    quindi avrei...

    sito/archivio/$cartella

    dentro questa dir ho un numero sconosciuto di immagini jpg. Delle quali non conosco il nome (apparte che di una che si chiama archivo.jpg la quale deve restare invariata)

    ora io necessito di rinominarle (in qualsiasi ordine) in modo sequenziale da 1.jpg a crescere fino a x.jpg

    come posso procedere?

  2. #2
    L'avatar di Xsescott
    Xsescott non è connesso AlterGuru
    Data registrazione
    08-02-2004
    Messaggi
    1,413

    Predefinito

    intanto da questo script puoi notare come vengono letti dei file:
    http://forum.it.altervista.org/php-m...-cartelle.html

    successivamente devi usare la funzione per rinominare:
    http://php.net/manual/en/function.rename.php

    per farlo in modo sequenziale puoi mettere una variabile $contatore che va da zero a n incrementata ad ogni ciclo.
    "Quando il potere dell'amore supererà l'amore per il potere il mondo conoscerà la pace" Jimmy Hendrix


    [ Richiesta: http://www.unibologna.eu/ ] --> [Risposta: http://www.magazine.unibo.it/Magazin...al_Portale.htm Morale] -->[ http://www.anti-phishing.it/news/art...s.13062007.php ]
    consoliwebsite.altervista.org

  3. #3
    Guest

    Predefinito

    grazie mille per le dritti.. ho scritto:

    Codice PHP:
    <?php

    $numerazione
    = 1;

    foreach (
    glob("./album/carlo/*.jpg") as $filename) {
    // la variabile $filename contiene l'url completo del file
    // la variabile $filename1 contiene solo il nome.estensione file

    $filename1 = preg_split('[/]', $filename);



    $nome = $filename1[count($filename1)-1];

    for (
    $numerazione=1; count($filename) >= $numerazione; $numerazione++) {
    rename("./album/carlo/$nome", "./album/carlo/$numerazione.jpg");

    $numerazione = $numerazione + 1;
    }
    }

    ?>

    il problema è che $nome contiene tutti i nomi... come posso risolvere?
    Ultima modifica di punkrosteeny : 04-03-2011 alle ore 16.14.15

  4. #4
    Guest

    Predefinito

    Citazione Originalmente inviato da punkrosteeny Visualizza messaggio
    grazie mille per le dritti.. ho scritto:

    Codice PHP:
    <?php

    $numerazione
    = 1;

    foreach (
    glob("./album/carlo/*.jpg") as $filename) {
    // la variabile $filename contiene l'url completo del file
    // la variabile $filename1 contiene solo il nome.estensione file

    $filename1 = preg_split('[/]', $filename);



    $nome = $filename1[count($filename1)-1];

    for (
    $numerazione=1; count($filename) >= $numerazione; $numerazione++) {
    rename("./album/carlo/$nome", "./album/carlo/$numerazione.jpg");

    $numerazione = $numerazione + 1;
    }
    }

    ?>

    il problema è che $nome contiene tutti i nomi... come posso risolvere?
    non ho capito quale sia il tuo problema.
    In questo modo rinomini tutti i file con estensione .jpg presenti nella cartella attribuendo nuovi nomi con un numero progressivo.
    Cosa vorresti che facesse e non fà?

  5. #5
    Guest

    Predefinito

    rinominare tutti i file con estensione .jpg presenti nella cartella attribuendo nuovi nomi con un numero progressivo

    lo script in se è corretto tranne per la variabile $nome che poi altro non è che $filename1[count($filename1)-1]

    poichè questa variabile è l'insieme tutti i nomi..


    per spiegarmi se ho 3 file chiamati:

    anna.jpg
    banana.jpg
    cavallo.jpg

    il risultato della stampa della variabile $nome è:

    anna.jpgbanana.jpgcavallo.jpg

    tutti insieme in fila.. e per questo non va a rinominare... come posso risolvere?

  6. #6
    Guest

    Predefinito

    prova così:
    Codice PHP:
    <?php
    $cartella
    = "./album/carlo/";
    $nome_numerico = 1; // impostiamo il nome del primo file che verrà rinominato
    foreach (glob($cartella."*.jpg") as $filename)
    {
    // cicliamo i file .jpg presenti
    $filename = basename($filename); // il nome del singolo file
    //echo $filename.'<br />';
    rename($cartella.$filename, $cartella.$numerazione.".jpg");
    //echo $nome_numerico.'<br />';
    $nome_numerico++; // aumentiamo di 1 il valore numerico

    }

    ?>
    ATTENZIONE HO EDITATO IL MESSAGGIO PERCHè AVEVO COMMESSO UN ERRORE!!!
    Ultima modifica di miniscript : 04-03-2011 alle ore 21.31.41

  7. #7
    Guest

    Predefinito

    mi dispiace ma non va
    infatti se al tuo script inseriamo un

    echo $filename;


    noteremo che l'output sono i nome.estensione di tutti i file uno di seguito all'altro....

    ovvero il problema di cui parlavo nel post precedente...

  8. #8
    Guest

    Predefinito

    credo che tu ti stia sbagliando...

    o non l'hai testato o vuoi fare qualcosa di diverso rispetto a quanto da te descritto...

    PS: forse ho capito quanto dici ma ti stai confondendo.
    se metti echo $filename è ovvio che ti stampa tutti i file uno dietro l'altro... infatti è un ciclo.

    prova a decommentare il rigo con echo $filename .'<br />';

    e noterai che ad ogni ciclo becca un singolo file
    Ultima modifica di miniscript : 04-03-2011 alle ore 22.07.25

  9. #9
    Guest

    Predefinito

    perdonami di aver dubitato...

    sul server altervista funziona senza problemi... ma in locale (server LAMP su opensuse 11.3) non funzionava (server funzionante dove testo varie cose tra cui joomla e php)... hai idea del perchè?

    ad ogni modo un immenso grazie...

  10. #10
    Guest

    Predefinito

    Hai perfettamente ragione... confesso che è una cosa che non ricordavo e me la son dovuta rivedere.

    Il problema è legato alla funzione rename() sui server windows.
    Dalla versione 5.3 di php non dovrebbero esserci più problemi ma i problemi ci sono per le precedenti (stando al manuale...).

    Ti consiglio di documentarti su php.net:
    http://it.php.net/manual/en/function.rename.php
    Ultima modifica di miniscript : 05-03-2011 alle ore 12.53.46

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •