simplecontent

PHP Snippets und Beispiele

Inhaltsverzeichnis A-Z Register
Beispiel ausführen

Dateinamen bereinigen

Zum Beispiel um beim Hochladen von Dokumenten für "saubere" Dateinamen zu sorgen.

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. Das PHP Code Beispiel:
<?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);
}

?>

Dieses PHP Snippet soll in erster Linie als Beispiel und Anregung für eigene Bemühungen dienen.
Gerne darf man es für Projekte aller Art benutzen.
Möchte jemand das Snippet also solches in ähnlicher oder anderer Form veröffentlichen ist ein kleiner Hinweis auf simplecontent.net nicht zuviel verlangt oder Herr Koch?
Für die Abwesenheit von Fehlern kann natürlich keine Gewähr gegeben werden.