Dateinamen bereinigen

Zum Beispiel um beim Hochladen von Dokumenten für "saubere" Dateinamen zu sorgen.
Beispiel ausführen
Dieses Skript macht folgendes - Umlaute werden konvertiert, also z.B. wird "ä" zu "ae" - Whitespace (Leerzeichen etc.) wird durch einen Unterstrich ersetzt - Alles wird in Kleinbuchstaben umgewandelt - alle Zeichen die nicht in der hier vorgegebenen Zeichenklasse [a-z0-9_-.] enthalten sind werden entfernt Sinnvoll einsetzbar ist es dort, wo es durch Speichern von Dokumenten bzw. Dateien unter ungültigen Namen zu Fehlern kommen kann.
<?php
/**
* Dateinamen bereinigen
*/

function TidyFilename($val)
{
    
// whitespace durch Unterstrich ersetzen
        
$new preg_replace('=(\s+)=''_'$val);

    
// Liste aller Umlaute 
    
$map = array(     
            
'ä' => 'ae',
            
'Ä' => 'ae',
            
'ß'=>'ss',
            
'ö'=>'oe',
            
'Ö' => 'oe',
            
'Ü'=>'ue',
            
'ü'=>'ue',

            
// hier ggf. weitere Zeichen ergänzen, z.B.

            
'à' => 'a',
            
'é' => 'e',
            
'è' => 'e',
        );

    
// Umlaute konvertieren
    
$new str_replace(array_keys($map), array_values($map), $new);

    
// Kleinschreibung
    
$new strtolower($new);

    
// alle anderen Zeichen verwerfen
    
$new preg_replace('#[^a-z0-9_.-]#'''$new);


    return 
$new;
}



// ein paar Beispiele für weniger schöne Dateinamen
$dirty_names = array(

        
'Übersicht.html',
        
'Eine kleine Beispielseite.html',
        
'Ölfaß.doc',
        
'TEST ÄÖÜ   .doc',
        
'häHä.php',
        
'Mit Binde-Strich 123.doc',
        
'sécurité intérieure.html',
        
'ŠmØrë-Brød röm pöm pöm pö',

    );

// Ausgabe
foreach ($dirty_names as $dirty){
    
$tidy TidyFilename($dirty);
    
printf('&quot;<strong>%s</strong>&quot; wird zu &quot;<em>%s</em>&quot;<br>'$dirty$tidy);
}

?>

Benutzte Funktionen


Hinweise zum DatenschutzImpressum © 2005-2008 S. Eickhoff