Dateiname validieren und auf Existenz prüfen

Insbesondere bei Upload-Scripts muss vor der Speicherung einer Datei auf dem Server geprüft werden, ob eine gleichnamige Datei bereits existiert und ob sie Sonderzeichen enthält. Dementsprechend muss ein neuer Dateiname generiert werden.

Folgende Funktion überprüft, ob eine Datei, gegeben in $filename, unter einem Pfad, gegeben in $path, bereits existiert und ersetzt alle Zeichen, ausser Buchstaben, Zahlen, Punkte und Bindestriche durch einen Unterstrich. Sollte die Datei existieren, so wird dem Namen eine Zahl vorne angestellt.

<?php

/*
 * @author vlmedia
 * @version 2011-01-15
 * @param $filename Dateiname, welcher validiert und auf Existenz geprueft wird
 * @param $path Pfad, unter welchem Dateiname geprueft werden soll
*/
function generateFilename($filename, $path = "/"){
	$filename = preg_replace("/[^a-zA-Z0-9]/", "_", $filename);
	if(file_exists($path.$filename) && is_file($path.$filename)){
		return generateFilename(mt_rand(1, 9).$filename, $path);
	}else{
		return $filename;
	}
}

?>

Beispiel

<?php
$file = 'grafik$%1numfen.jpg';
echo generateFilename($file);
// Ausgabe: grafik__1num__fen.jpg
?>

Dieser Artikel wurde vertaggt mit , , , , .
Kategorien: Funktionen

Hat Ihnen dieser Artikel gefallen? - Dann abonnieren Sie vlblog um über neue Themen rund ums Web informiert zu werden.

Ein Kommentar zu “Dateiname validieren und auf Existenz prüfen”

  1. Marcel sagt:

    Moin!
    Danke für die Funktion, hat auf Anhieb funktioniert. Allerdings musste ich hinter der 9 noch einen . einfügen, damit nicht auch der . vor der Dateiendung durch ein _ ersetzt wird.

    Also
    $filename = preg_replace(“/[^a-zA-Z0-9.]/”, “_”, $filename);

Hinterlasse eine Antwort