Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it L'avatar di Lucas1
    Registrato dal
    Mar 2005
    Messaggi
    100

    Pulire il nome di un file in caricamento

    Ciao ragazzi,

    prima di caricare un file su server faccio una serie di pulizie del nome per avere qualcosa di semi-standard. Usando questa mia funzioncina:

    codice:
    <?php
    
    function clean_filename($file_name) {
    	// Prendo l'estensione del file
    	$estensione = array_pop(explode(".",$file_name));
    
    	// Converto caratteri vari in trattino basso
    	$caratteri = array($estensione, " ", "'", "&rsquo;", "’", "-");
    	$file_name = str_replace($caratteri, "_", $file_name);
    
        // Levo caratteri fastidiosi (e l'estensione)
    	$caratteri = array($estensione, "+", ",", "[", "]", ".", "(", ")", "=", "$", "%", "\"", "'", "\\", "/", "?", "!", "<", ">");
    	$file_name = str_replace($caratteri, "", $file_name);
    	
        $caratteri = array('Š'=>'S', 'š'=>'s', 'Ž'=>'Z', 'ž'=>'z', 'À'=>'A', 'Á'=>'A', 'Â'=>'A', 'Ã'=>'A', 'Ä'=>'A', 'Å'=>'A', 'Æ'=>'A', 'Ç'=>'C', 'È'=>'E', 'É'=>'E', 'Ê'=>'E', 'Ë'=>'E', 'Ì'=>'I', 'Í'=>'I', 'Î'=>'I', 'Ï'=>'I', 'Ñ'=>'N', 'Ò'=>'O', 'Ó'=>'O', 'Ô'=>'O', 'Õ'=>'O', 'Ö'=>'O', 'Ø'=>'O', 'Ù'=>'U', 'Ú'=>'U', 'Û'=>'U', 'Ü'=>'U', 'Ý'=>'Y', 'Þ'=>'B', 'ß'=>'Ss', 'à'=>'a', 'á'=>'a', 'â'=>'a', 'ã'=>'a', 'ä'=>'a', 'å'=>'a', 'æ'=>'a', 'ç'=>'c', 'è'=>'e', 'é'=>'e', 'ê'=>'e', 'ë'=>'e', 'ì'=>'i', 'í'=>'i', 'î'=>'i', 'ï'=>'i', 'ð'=>'o', 'ñ'=>'n', 'ò'=>'o', 'ó'=>'o', 'ô'=>'o', 'õ'=>'o', 'ö'=>'o', 'ø'=>'o', 'ù'=>'u', 'ú'=>'u', 'û'=>'u', 'ý'=>'y', 'ý'=>'y', 'þ'=>'b', 'ÿ'=>'y' );
        $file_name = strtr($file_name, $caratteri); 
    
        // Converto tutto in minuscolo
    	$file_name = strtolower($file_name);
    
        // Riaggiungo l'estensione al nome ripulito
    	$file_name = $file_name.".".$estensione;
    	
    	return $file_name;
    	}
    ?>
    Qualcuno è in grado magari di ripulire questa funzione in una più performante?

    Sono benvenuti anche altre eventuali funzioni già scritte e suggerimenti sui metodi che usate voi!

    Grazie

  2. #2
    Utente di HTML.it L'avatar di Lucas1
    Registrato dal
    Mar 2005
    Messaggi
    100
    Me la sono già riscritta da solo con una più drastica:

    Codice PHP:
    function clean_filename($file_name) {
        
    // Prendo l'estensione del file
        
    $estensione array_pop(explode(".",$file_name));

            
    // Elimino l'estensione
        
    $file_name str_replace($estensione''$file_name);

        
    // Elimino gli spazi eccessivi e ne lascio uno solo
        
    $file_name preg_replace('/\s*/m'''$file_name);
        
        
    // Converto spazi rimasti e trattini in trattino basso
        
    $caratteri = array(" ""-");
        
    $file_name str_replace($caratteri"_"$file_name);

        
    // Elimino tutti i caratteri che non siano lettere (maiuscole e minuscole) o numeri
        
    $file_name preg_replace("[\W]"""$file_name );
        
        
    // Converto tutto in minuscolo
        
    $file_name strtolower($file_name);

            
    // Riaggiungo l'estensione al nome ripulito
        
    $file_name $file_name.".".$estensione;
        
        return 
    $file_name;
        } 
    Qualcuno è in grado di scrivere le varie conversioni (o il numero maggiore di esse) in un'unica espressione?

    Thanks!

  3. #3
    Utente di HTML.it L'avatar di Lucas1
    Registrato dal
    Mar 2005
    Messaggi
    100
    In sostanza (e poi mi taccio), vorrei scrivere le seguenti espressioni in una unica:

    Codice PHP:
    $file_name str_replace($estensione''$file_name); // Elimino l'estensione
    $file_name preg_replace('/\s*/m'''$file_name); // Elimino gli spazi eccessivi e ne lascio uno solo
    $caratteri = array(" ""-"); // Converto spazi rimasti e trattini in trattino basso
    $file_name str_replace($caratteri"_"$file_name);
    $file_name preg_replace("[\W]"""$file_name ); // Elimino tutti i caratteri che non siano lettere (maiuscole e minuscole) o numeri 
    [[ATTENZIONE CHE IL FORUM ELIMINA TUTTI I BACKSLASHES!!]]

    Le funzioni sono corrette ma si visualizzano scorrette.......

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.