REGEXP zum Ersetzen von ungültigen Zeichen in Dateinamen

REGEXP zum Ersetzen von ungültigen Zeichen in Dateinamen

am 26.09.2005 22:19:20 von Ralf Gmeiner

Hallo!

Wie der Titel bereits andeutet suche ich eine REGEXP die mir ungültige
Zeichen in Dateinamen ersetzt. Hintergrund: Ich programmiere ein
Content-Management-System mit der Möglichkeit Dateien hochzuladen, um diese
zum Download anzubieten. Damit die Download-URL keine "kryptischen" Zeichen
enthält möchte ich aber nur folgende Zeichen zulassen (ohne Klammer):
[a-zA-Z0-9_-.] Ungültige Zeichen sollen durch ein _ ersetzt werden.
Mehrfache _ werden durch ein _ ersetzt.

Bsp.: Ich habe die Datei "Öl- & Lackfarben 23.jpg" auf meinem Windows-System
und möchte diese Datei auf den Linux- bzw. Solaris-Webserver beim Hoster
hochladen. Die Datei soll dabei automatisch umbenannt werden in
"Oel-_Lackfarben_23.jpg".

D.h. es sind folgende Ersetzungsschritte notwendig:
1) Umlaute auflösen:
"Öl- & Lackfarben 23.jpg" => "Oel- & Lackfarben 23.jpg"
2) Ungültige Zeichen werden durch "_" ersetzt:
"Oel- & Lackfarben 23.jpg" => "Oel-___Lackfarben 23.jpg"
3) Multiple "_" werden durch einen einfachen Unterstrich ersetzt:
"Oel-___Lackfarben 23.jpg" => "Oel-_Lackfarben 23.jpg"

urlencode() und rawurlencode() liefern mir zwar "sichere" aber nur schwer
lesbare URLs: "%D6l-+%26+Lackfarben+23.jpg" bzw.
"%D6l-%20%26%20Lackfarben%2023.jpg"

Danke für Eure Hilfe!

Viele Grüße
Ralf

Re: REGEXP zum Ersetzen von ungültigenZeichen in Dateinamen

am 26.09.2005 22:40:39 von Jockel Hofmann

Ralf Gmeiner am Montag, 26. September 2005 22:19:

[Rad, neuerfinden]

> [a-zA-Z0-9_-.] Ungültige Zeichen sollen durch ein _ ersetzt werden.
> Mehrfache _ werden durch ein _ ersetzt.

Na, dann schaue ich mal in meinem neu erfundenen Rad^W^WCMS und mache ein
kurzes copy-paste und voila:

$search = array("/<[a-zA-Z]+[^>]+alt(\s*)=\s*[\"']([^\"']*)[\"'
[^>]*>/U",
"/ä/",
"/ö/",
"/ü/",
"/Ä/",
"/Ö/",
"/Ü/",
"/ß/",
"/[^0-9a-z\/]+/i",
"/[^0-9a-z\/](\/|$)/"
);
$replace = array("\\2",
"ae",
"oe",
"ue",
"Ae",
"Oe",
"Ue",
"ss",
"-",
"",
);
$pfad = preg_replace($search, $replace,$pfad);

Kann natürlich noch erweitert werden um  éèê áàâ usw.

:-) Jockel


--
Signatur wegen Erschöpfung zur Zeit im Urlaub

Re: REGEXP zum Ersetzen von ungültigen Zeichen in Date

am 26.09.2005 23:51:07 von Ralf Gmeiner

"Jockel Hofmann" schrieb...

> [Rad, neuerfinden]

Super, vielen Dank!!

Re: REGEXP zum Ersetzen von ungültigenZeichen in Dateinamen

am 26.09.2005 23:54:54 von Jockel Hofmann

Ralf Gmeiner am Montag, 26. September 2005 23:51:

> "Jockel Hofmann" schrieb...
>
>> [Rad, neuerfinden]
>
> Super, vielen Dank!!

Warum erfindest du eigentlich das Rad neu?

:-) Jockel

--
Signatur wegen Erschöpfung zur Zeit im Urlaub

Re: REGEXP zum Ersetzen von ungültigen Zeichen in Date

am 19.10.2005 00:13:31 von Ralf Gmeiner

"Jockel Hofmann" schrieb...

> Warum erfindest du eigentlich das Rad neu?

Sorry, hab Dein Posting eben erst gesehen.

....weil ich keine (kostenlosen) Skripts/Klassen/CMS-Systeme kenne, die das
tun was ich brauche. Mit selbst programmierter Software bin ich auch sehr
viel flexibler.

Viele Grüße
Ralf