(Unicode-)Sonderzeichen entfernen?
Steffi
- php
0 MudGuard
Hallo ihr,
ich arbeite an einem Script, das von Usern zur Bewertung von Gastgebern eines Chatraumes genutzt werden soll.
Die Gastgeber sind alle in eine Datenbank eingetragen, manche davon mit Unicode-Sonderzeichen in ihrem Namen.
Das Script arbeitet aber nicht korrekt mit den Unicodes... es soll ein Cookie angelegt werden, gegen doppelte Bewertungen, ausserdem IP-Sperre für 24 Stunden. Letzte ist das einzige, was klappt... das Cookie funktioniert bei Unicode Zeichen nicht richtig.
Nun ist es für mich ja fast unmöglich, über den replace-Befehl jedes mögliche Sonderzeichen einzeln entfernen zu lassen. Gibt es eine Möglichkeit, alle Zeichen zu entfernen, die "ausserhalb" der normalen Zeichen liegen? (Gute Frage: Was ist ausserhalb? Für mich sind es die Buchstaben a-z, A-Z, 0-9 und - _)
Hat jemand eine Lösung? Kann ich die Unicodes automatisch rausfiltern lassen, oder kann ich den Namen irgendwie zur Bearbeitung umwandeln lassen, dass ich nur normale Zeichen habe, und ihn evtl. später zur Ausgabe wieder zurück wandeln?
Grüße
Hi,
Die Gastgeber sind alle in eine Datenbank eingetragen, manche davon mit Unicode-Sonderzeichen in ihrem Namen.
Hm.
Das Script arbeitet aber nicht korrekt mit den Unicodes... es soll ein Cookie angelegt werden, gegen doppelte Bewertungen, ausserdem IP-Sperre für 24 Stunden. Letzte ist das einzige, was klappt... das Cookie funktioniert bei Unicode Zeichen nicht richtig.
Machst Du denn sinnvolle Encoding-Angaben?
Nun ist es für mich ja fast unmöglich, über den replace-Befehl jedes mögliche Sonderzeichen einzeln entfernen zu lassen. Gibt es eine Möglichkeit, alle Zeichen zu entfernen, die "ausserhalb" der normalen Zeichen liegen? (Gute Frage: Was ist ausserhalb? Für mich sind es die Buchstaben a-z, A-Z, 0-9 und - _)
Was außerhalb der normalen Zeichen liegt, hängt natürlich von Deiner Definition von "normalen Zeichen" ab.
Wenn Du eine Liste der erlaubten Zeichen hast, bietet sich zum Entfernen der anderen Zeichen eine negierte Zeichenklasse an.
Bedenke aber, was passiert, wenn sich zwei Namen nur durch nicht-"normale" Zeichen unterscheiden.
Es wäre m.E. wesentlich sinnvoller, derartige Namensbeschränkungen bereits beim Anmelden der Namen zu verbieten.
cu,
Andreas