Salve, ho questo problema: ho un form per l' upload di file in php tutto funziona bene tranne quando il file da uplodare ha qualche lettera accentata nel suo nome, ho provato a pulire la stringa del nome del file prima di uplodarlo e me la pulisce ma poi quando sul front clicco sul link del file mi dice file non trovato (il file è presente sul server e l' indirizzo è corretto, tutti gli altri file funzionano correttamente) vi mostro il codice spero qualcuno possa aiutarmi cosi da risolvere il problema una volta per tutte.

-----------------------------------------------------------------------------------------
Codice PHP:
if (@$_FILES['uploadfile']['error'] != 0) {
        
header("Location: ../../gestione_cartelle.php?id=$id_cartella_padre&mess=6"); 
}
// controllo che non ci siano stati errori nell'upload (codice = 0)  
else { 
// upload ok 
    
$data_file time();
    @
$nome_file $_FILES['uploadfile']['name'];
    
$nome_file SostituisciAccenti($nome_file);
    
// sostituisco gli accenti con un trattino
    
$nome_file str_replace ("'""-"$nome_file);
    
// tolgo gli spazi prima e dopo
    
$nome_file =  ltrim($nome_file);
    
$nome_file =  rtrim($nome_file);
    
    
$nome_file ereg_replace("[^A-Za-z0-9_\-\./ ]"""$nome_file); // rimuove special characters
    
$nome_file ereg_replace(" {1,}""-"$nome_file); // sostituisce uno o piu spazi consecutivi con un underscore
        
    // compongo il nome del file
    
$nome_file "id-".$id_cartella_padre."-".$data_file."-".$nome_file;
    
$nome_file strtolower($nome_file);
    
    
// controllo i tipi di file che non possono essere uplodati tipo .exe .php .html .js
    
if ($_FILES['uploadfile']['type'] == "application/octet-stream" or $_FILES['uploadfile']['type'] == "text/html" or $_FILES['uploadfile']['type'] == "application/x-javascript" or $_FILES['uploadfile']['type'] == "text/asp") {
            
header("Location: ../../gestione_cartelle.php?id=$id_cartella_padre&mess=5"); //file non valido 
    
}
    
    if (
$_FILES['uploadfile']['size'] > 314572800) { 
            
header("Location: ../../gestione_cartelle.php?id=$id_cartella_padre&mess=4"); // errore, file troppo grande (> 300MB)
    
}

    
// copio il file dalla cartella temporanea a quella di destinazione cioè la cartella file che si trova nella cartella mantenendo il nome originale  
    
$percorso_upload URL_FILE_UPLOAD.$nome_file;

    
copy($_FILES['uploadfile']['tmp_name'], $percorso_upload);