Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 20
  1. #1

    rinominare file per problema caratteri speciali

    Buon giorno....ho cercato di convertire quei caratteri speciali se presenti all'interno del nome del file, ma non li converte:
    Codice PHP:
    function converti_accenti($valore){
        
    $valorestr_replace("à""a"$valore);
        
    $valorestr_replace("è""e"$valore);
        
    $valorestr_replace("é""e"$valore);
        
    $valorestr_replace("ì""i"$valore);
        
    $valorestr_replace("ò""o"$valore);
        
    $valorestr_replace("ù""u"$valore);
        return 
    trim($valore);
    }

    $phFileImg             $_FILES['txtImmagine']['name'];
    echo 
    converti_accenti($phFileImg);exit; 
    il problema si pone perchè è un file e in quanto tale deve essere trattato in modo diverso?
    se si come?
    grazie mille....

  2. #2
    il nome del file è: codice_MArtè.jpg
    se voglio convertirlo prendendo il nome direttamente dalla variabile globale:
    $_FILES['txtImmagine']['name'], non converte nulla, se invece creo una variabile stringa con lo stesso nome codice_MArtè.jpg, lo converte senza problemi:

    Codice PHP:
    $phFileImg converti_accenti("codice_MArtè.jpg");
    //result codice_MArte.jpg 
    come dovrei fare?
    grazie mille

  3. #3
    Utente di HTML.it L'avatar di jcsnake
    Registrato dal
    Jun 2010
    Messaggi
    629
    ciao ci sono delle funzioni specifiche del PHP che ti permettono di fare questo http://www.sastgroup.com/tutorials/c...un-file-in-php

    Ti faccio un esempio...

    Codice PHP:
    $ris=rename("codice_MArtè.jpg""codice_MArte.jpg");
    if(
    $ris) echo "Rinomina file riuscita";
    else 
    //gestisci errore 

  4. #4
    ti ringrazio, avevo dato un'occhiata alla funzione rename, ma come faccio a togliere le lettere accentate?facendo in questo modo è corretto?
    Codice PHP:
    $phFileImg=rename("codice_MArtè.jpg"converti_accenti($phFileImg)); 
    if(
    $phFileImg) echo "Rinomina file riuscita"
    else echo 
    "riprova"
    può andare bene?grazie ancora

  5. #5
    Utente di HTML.it L'avatar di jcsnake
    Registrato dal
    Jun 2010
    Messaggi
    629
    si si certo che va bene, anzi è la soluzione esatta per modulare il problema alla funzione interessa che i due parametri siano due stringhe per poter lavorare, quindi se la tua funzione converti_accenti() ritorna uno stringa, tutto funziona correttamente

  6. #6
    allora facendo in questo modo mi restituisce un paio di errori:
    Codice PHP:
    $PDF rename($_FILES['txtPdf']['tmp_name'], $base_dir."News/".$Cartellamese.$hidProgrNews."_".converti_accenti($_FILES['txtPdf']['name']));
    move_uploaded_file($_FILES['txtPdf']['tmp_name'], $PDF); 
    gli errori:
    Codice PHP:
    Warningmove_uploaded_file(/tmp/phpR5UkXt) [function.move-uploaded-file]: failed to open streamNo such file or directory in /var/www/sito/News/InNews.php on line 491

    Warning
    move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/phpR5UkXt' to '1' in /var/www/sito/News/InNews.php on line 491 
    la linea 491 è questa move_uploaded_file($_FILES['txtPdf']['tmp_name'], $PDF);

    come mai mi restituisce questo errore?
    grazie ancora

  7. #7
    Utente di HTML.it L'avatar di jcsnake
    Registrato dal
    Jun 2010
    Messaggi
    629
    Credo sia un problema di uso scorretto della funzione move_uploaded_file...da manuale (http://php.net/manual/en/function.mo...oaded-file.php) la funzione vuole come primo parametro il filename, che tu metti come $_FILES['txtPdf']['tmp_name'] ma dovrebbe essere quello nuovo da te cambiato $PDF, e come secondo parametro la destinazione dove muovere il file se questo esiste, e tu passi $PDF che non è una destinazione ma un filename.
    Spero di essere stato chiaro

  8. #8
    alla fine da manuale risulta cosi:
    Codice PHP:
    move_uploaded_file($_FILES['Filedata']['tmp_name'], $file_src); 
    anche inserendo la path di dove andare a caricare il 'nuovo' file, e facendo in questo modo:
    Codice PHP:
    $PDF rename($_FILES['txtPdf']['tmp_name'], $base_dir."News/".$Cartellamese.$hidProgrNews."_".converti_accenti($_FILES['txtPdf']['name']));
    move_uploaded_file("/tmp/".$_FILES['txtPdf']['tmp_name'], $base_dir."News/".$Cartellamese.$PDF); 
    il file lo carica senza sostituire le lettere accentate, utilizzando la funzione 'converti_accenti'.
    mannaggia aho....
    se puoi continuare ad aiutarmi per favore...

  9. #9
    Utente di HTML.it L'avatar di jcsnake
    Registrato dal
    Jun 2010
    Messaggi
    629
    Sei sicuro che la funzione converti_accenti() funziona correttamente no?
    Se si, vedi di fare delle prove diverse, cioè controlla se la funzione rename effettivamente rinomina il file.
    Mi spiego meglio, invece di rinominare con il vero nome che ti serve prova con un semplice "pippo.estensione"...

    Codice PHP:
    $PDF rename($_FILES['txtPdf']['tmp_name'],"pippo.estensione"); 

  10. #10
    si in questo modo avevo già verificato e funzionava benissimo, solo che non capisco perchè la funzione non debba funzionare...
    cioè come dicevo prima, se è una semplice stringa la converte senza problemi, prendendo invece il nome del file direttamente dalla variabile globale $_FILES['txtImmagine']['name'], non c'è verso che la converta...
    vorrei capire, se tu sai il perchè puoi spiegarmelo per favore?

    a sto punto che faccio?suddivido il nome del file, converto la porzione relativa al nome e poi ricompongo il tutto nome_file + estensione?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.