DieTa
Aktives Mitglied
Thread Starter
- Dabei seit
- 17.09.2003
- Beiträge
- 3.388
- Reaktionspunkte
- 32
Hallo,
ich möchte es den Usern gerne erlauben, auch Dateinamen in Ihrer Heimatsprache auszuwählen und nicht vorher jede Datei umbenennen zu müssen.
Das Problem beginnt schon mit jemanden, der eine Datei mit dem Namen "Hallo + 123üöä.jpg" hochlädt. Hier könnte ich zwar per Stringreplace die "Fremdzeichen" rausholen, aber spätestens wenn der User aus China, Japan oder Arabien kommt, habe ich ein Problem.
Ich dachte zunächst mit der utf8_encode-Funktion komme ich weiter, aber bei der japanischen Grafikdatei bekomme ich dann nur noch 28????????.jpg angezeigt, was vom Server nicht verarbeitbar ist.
Wie könnte ich das Problem lösen?
Gruß
Dennis
EDIT:
Ok - ich habe zwar keine RICHTIGE Lösung gefunden, aber ein Workaround
Für mich sieht das so aus:
1. $dateiname = str_replace(" ", "", $datein);
Leerzeichen entfernen
2. $dateiname = mb_convert_encoding($dateiname,"HTML-ENTITIES","auto");
Alle nicht Latin-Zeichen in ? umwandeln (klappt zumindest bei Tests mit Kyrillisch und Japanisch
3. $dateiname = str_replace(array('<', '>', '', '/', '=', '+', '*', '#', '?', '§', '&', '(', ')'), "", $dateiname);
Alle Sonderzeichen werden rausgefiltert. Dabei wird das ? auch schlichtweg gelöscht.
Da eh eine Unique-ID vorgehängt wird, macht es nichts, dass der Dateiname selber bei rein (z.B.) kyrillischen Zeichensätzen verschwindet.
ich möchte es den Usern gerne erlauben, auch Dateinamen in Ihrer Heimatsprache auszuwählen und nicht vorher jede Datei umbenennen zu müssen.
Das Problem beginnt schon mit jemanden, der eine Datei mit dem Namen "Hallo + 123üöä.jpg" hochlädt. Hier könnte ich zwar per Stringreplace die "Fremdzeichen" rausholen, aber spätestens wenn der User aus China, Japan oder Arabien kommt, habe ich ein Problem.
Ich dachte zunächst mit der utf8_encode-Funktion komme ich weiter, aber bei der japanischen Grafikdatei bekomme ich dann nur noch 28????????.jpg angezeigt, was vom Server nicht verarbeitbar ist.
Wie könnte ich das Problem lösen?
Gruß
Dennis
EDIT:
Ok - ich habe zwar keine RICHTIGE Lösung gefunden, aber ein Workaround
Für mich sieht das so aus:
1. $dateiname = str_replace(" ", "", $datein);
Leerzeichen entfernen
2. $dateiname = mb_convert_encoding($dateiname,"HTML-ENTITIES","auto");
Alle nicht Latin-Zeichen in ? umwandeln (klappt zumindest bei Tests mit Kyrillisch und Japanisch
3. $dateiname = str_replace(array('<', '>', '', '/', '=', '+', '*', '#', '?', '§', '&', '(', ')'), "", $dateiname);
Alle Sonderzeichen werden rausgefiltert. Dabei wird das ? auch schlichtweg gelöscht.
Da eh eine Unique-ID vorgehängt wird, macht es nichts, dass der Dateiname selber bei rein (z.B.) kyrillischen Zeichensätzen verschwindet.
Zuletzt bearbeitet: