Dateinamen bereinigen bei Upload
hansi
- php
Hallo,
gibt es eine PEAR-Klasse oder ähnliches, mit der Dateinamen von Umlauten und sonstigen Sonderzeichen bereinigt werden können? http://simplecontent.net/phpsnippets/1/textersetzungen.html ist ja schonmal nicht schlecht eigentlich...;
Dank Hansi
Hello,
gibt es eine PEAR-Klasse oder ähnliches, mit der Dateinamen von Umlauten und sonstigen Sonderzeichen bereinigt werden können?
wie wäre es denn mit str_replace() und einem Array für die Ersetzungen?
Zur Not auch drei, die gestaffelt durchgegangen werden...
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom
hi,
wie wäre es denn mit str_replace() und einem Array für die Ersetzungen?
Das wäre Blacklisting.
Whitelisting ist aber in den meisten Fällen, wo es um "Sicherheit" geht, empfehlenswerter.
gruß,
wahsaga
hallo wahsaga,
dank. das o.g. Skript macht ja mit Ersetzungen der Umlaute, sz und einigen Akzenten erstmal eine Zwischenversion und bereinigt die dann um alles, was nicht kleinbuchstabe, zahl, punkt, bindestrich oder unterstrich ist. das wäre dann wohl whitelisting, oder? Eine vordefinierten Funktion dafür bei PEAR gibts wohl nicht, oder?
gruß, hansi
Hello,
Bei Ersetzungen kann man eigentlich weder von Whitelisting (alles, was erlaubt ist), noch von Blacklistung (alles, was verboten ist) sprechen.
Ein einfaches str_replace() mit Array hilft schon weiter.
Allerdings ist das noch keine "Normierung".
Dann müssten z.B. solche Dinge, wie
"Dr. Heinrich Jasper Str"
"Dr.-Heinrich-Jasper-Str."
"Dr.-Heinrich-Jasper-Straße"
"Dr.-Heinrich-Jasper-Straße"
"Dr-Heinrich-Jasper-Straße"
usw. nachher alle gleich aussehen.
Und dann kommt das nächste Problem
"Dr.-Heinr.-Jasper-Straße"
Prinzipiell geht das das nur noch über SoundEx() oder ähnliche Funktionen, sowie eine Zerlegung in Sequenzen an den vermeintlichen Trennstellen.
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom
hi,
Bei Ersetzungen kann man eigentlich weder von Whitelisting (alles, was erlaubt ist), noch von Blacklistung (alles, was verboten ist) sprechen.
Doch, kann man.
Wieso sollte man nicht?
Ein einfaches str_replace() mit Array hilft schon weiter.
Nur, wenn einem Blacklisting ausreicht.
gruß,
wahsaga
Hello,
Bei Ersetzungen kann man eigentlich weder von Whitelisting (alles, was erlaubt ist), noch von Blacklistung (alles, was verboten ist) sprechen.
Doch kann man. Esetzen ist immer Blacklisting, weil die replace funktion wissen will _was genau_ sie den nun ersetzen will. (und nicht was sie nicht ersetzen will)
'Whitelisting' würde aber bedeuten das du mal alles aus dem String herausnimmst was du gebrauchen kannst. Und das machst nicht mit einer Ersetzen-Funktion, sondern einer Such-Funktion wie z.b. preg_match (http://www.php.net/preg_match)
Eindeutig sicherer.
Hello,
Doch kann man. Esetzen ist immer Blacklisting, weil die replace funktion wissen will _was genau_ sie den nun ersetzen will. (und nicht was sie nicht ersetzen will)
Dann musst Du in einer Schleife sooft ersetzen, bis nichts Verbotenes mehr auftaucht.
Ein einfaches str_replace ist noch kein Blacklistung.
Ein "Whitelisting" ist hier als Verarbeitungsschritt aber auch nicht angebracht, weil der OP keine Informaionsinhalte vernichten will, sondern sie nur umcodieren will in eine einheitliche (andere) Kodierungsform. Wie weit das möglich ist, steht auf einem anderen Blatt.
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom
hi,
Doch kann man. Esetzen ist immer Blacklisting, weil die replace funktion wissen will _was genau_ sie den nun ersetzen will. (und nicht was sie nicht ersetzen will)
Dann musst Du in einer Schleife sooft ersetzen, bis nichts Verbotenes mehr auftaucht.
Und wie nennt man so eine Definition von "Verbotenem"? Eben, bspw. eine Blacklist.
Ein einfaches str_replace ist noch kein Blacklistung.
Es läuft aber in diesem Falle darauf hinaus.
Ein "Whitelisting" ist hier als Verarbeitungsschritt aber auch nicht angebracht, weil der OP keine Informaionsinhalte vernichten will, sondern sie nur umcodieren will in eine einheitliche (andere) Kodierungsform. Wie weit das möglich ist, steht auf einem anderen Blatt.
Ob _ausschliesslich_ das angebracht ist, steht wiederum auf einem anderen Blatt.
gruß,
wahsaga
Hello,
Dann musst Du in einer Schleife sooft ersetzen, bis nichts Verbotenes mehr auftaucht.
Und wie nennt man so eine Definition von "Verbotenem"? Eben, bspw. eine Blacklist.
Eine Transformation ist weder ein White- noch ein Blacklistung.
Die zu transformierenden Inhalte stehen schließlich in der "Whitelist" der Transformationsfunktion :-P
Bei Blacklisting würden die verbotenen Teile nur herausgenommen werden, oder aber der ganze Wert aufgrund des Vorhandenseins solcher verbotenen Werte abgelehnt werden...
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom
hi,
Die zu transformierenden Inhalte stehen schließlich in der "Whitelist" der Transformationsfunktion :-P
Dann kann deine Forderung,
Dann musst Du in einer Schleife sooft ersetzen, bis nichts Verbotenes mehr auftaucht.
ja gar nicht erfüllt werden - wenn nichts "Verbotenes" definiert ist, kann man auch nicht so lange ersetzen, "bis nichts Verbotenes mehr auftaucht".
gruß,
wahsaga