Eingabevalidierung bei Internationalisierung der Seite

MarcusS

Grünschnabel
Tag,

ich suche eine einfache Möglichkeit, die Eingabe auf bestimmte Zeichen hin zu validieren. Ich möchte, dass Nutzer z.B. in das Feld Nutzername nur Zeichen aus dem jeweils in der Zielsprache vorkommenden Alphabet eintragen können, um zu verhindern, dass z.B. chinesische Zeichen als Nutzernamen in einer deutschen Version verwendet werden können (Schlicht weil ich das in der deutschsprachigen Version mangels chinesischer Sprachkenntnisse nicht überprüfen kann...)

Während dies bei einer Sprache wie deutsch noch ganz einfach via regex zu lösen ist (zb [A-Za-zÖÄÜöäü] ...), wird es schwierig, wenn das Script in einer beliebigen Anzahl von Sprachen funktionieren soll. Per setlocale und gettext wird die Internationalisierung innerhalb des Scripts gesteuert. Nun dachte ich mir wäre es doch eigentlich nur fair, wenn es eine Funktion gäbe, welche automatisch prüfen kann, ob ein String nur aus Zeichen der jeweils ausgewählten locale-Einstellung [und zusätzlich dem lateinischen Alphabet] besteht. Aber leider finde ich sie in der Doku nicht.

Wie löst ihr das Problem?

TIA
Marcus
 
Wenn ein Benutzer sich eine Seite in einer bestimmten Sprache anzeigen lässt, dann ist auch davon auszugehen, dass er diese verwenden wird. Das ist die einfachste Lösung.

Es ist natürlich nicht unmöglich aber doch recht unwahrscheinlich, dass jemand in einer anderen Sprache als der gezeigten etwas eingibt.

Jetzt müsste natürlich bekannt sein in welchem Zusammenhang Daten eingegeben werden. Wenn es innerhalb eines Social Networks ist, dann wird es durch deine Maßnahme unmöglich für einen Deutschen romanische Sprachen oder Sätze zu zitieren. In den slawischen Sprachen wird es schwer germanische Sprachen zu zitieren in Diskussionen etc.

Deswegen sehe ich persönlich einfach davon ab den Inhalt so genau zu validieren.

Dennoch gibt es in PHP diverse Erweiterungen zu Sprachen:
http://de.php.net/manual/de/refs.international.php
http://de.php.net/manual/de/book.enchant.php

So ließe sich für deinen Fall sicherlich ein Wörterbuch nutzen.
 
Zurück