Umgang mit anderen Zeichentabellen in PHP

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.
 
Zuletzt bearbeitet:
Zurück
Oben Unten