Ulrich: PHP reg_ex und kyrillisch

Moin,

eine kurze Frage, an der ich schon einige Zeit herumknabbere.
Es geht um die Überprüfung von Benutzereingaben in ein Formular.
Mit Ausdrücken wie
[A-Za-Z]
kann man ja bekannter Maßen überprüfen, ob die Eingabe aus lateinischen Buschstaben besteht.
Gibt es etwas analoges auch für kyrillisch?
Leider funktioniert
\w
auch nicht. Scheinbar werden kyrillische Zeichen durch \w nicht abgedeckt.
Ich würde gerne überprüfen ob die Eingabe aus kyrillischen Zeichen ohne Ziffern besteht.

Was ich ferner bemerkt habe ist, daß bei utf-8 Kodierung kyrillische Zeichen kein Problem darstellen. Wenn man einen String, in dem kyrillsiche Zeichen enthalten sind aber mit
htmlentities($str);
behandelt, wird kyrillisch nicht mehr richtig dargestellt. Ich denke da liegt daran, daß diese Funktion standardmäßig die ISO-8859-1 als Codierung zu Grunde legt? Ich denke dem könnte man eventuell mit
htmlentities($str, utf-8);
begegnen. Liege ich da richtig? Das würde ich ggf. morgen mal ausprobieren, aber wenn mir jemand sagen könnte ob das eine Chance hat zu funktionieren, dann wäre es mir lieb.
Danke im Vorraus.

mit freundlichen Grüßen
Ulrich

--
Teiltransparente Bereiche
selfcode: sh:| br:> ie:% mo:) va:) de:] zu:) fl:( ss:| ls:[
um-fritz.de
  1. Hi Ulrich,

    Gibt es etwas analoges auch für kyrillisch?
    Leider funktioniert
    \w
    auch nicht. Scheinbar werden kyrillische Zeichen durch \w nicht abgedeckt.

    die PCRE-Funktionen beachten die Locale-Einstellung. Du musst also zuerst via setlocale() auf eine passende Locale umstellen, damit \w die gewünschten Zeichen erkennt.

    Ich würde gerne überprüfen ob die Eingabe aus kyrillischen Zeichen ohne Ziffern besteht.

    Dafür ist \w potentiell ungeeignet, siehe z.B. die Patternsyntax bei PHP.

    htmlentities($str, utf-8);
    begegnen. Liege ich da richtig? Das würde ich ggf. morgen mal ausprobieren, aber wenn mir jemand sagen könnte ob das eine Chance hat zu funktionieren, dann wäre es mir lieb.

    Abgesehen davon, dass du die Stringbegrenzer um den zweiten Parameter vergessen hast, schau dir die Funktionsbeschreibung zu htmlentities() an. Der zweite Parameter legt fest, in welcher Weise Anführungszeichen behandelt werden. Erst der dritte Parameter gibt den zu verwendenden Zeichensatz an.

    Gruß,
    Andreas.

  2. echo $begrüßung;

    Mit Ausdrücken wie [A-Za-Z] kann man ja bekannter Maßen überprüfen, ob die Eingabe aus lateinischen Buschstaben besteht.
    Gibt es etwas analoges auch für kyrillisch?

    Auch kyrillisch hat ein Alphabet mit einem Buchstaben am Anfang und einem am Ende - und lokalen Besonderheiten. In den Kodierungen, von denen ich annehme, dass sie dich interessieren, liegen diese Buchstaben auch hintereinander: http://de.wikipedia.org/wiki/Kyrillisch#Zeichenkodierung

    PHP und Multibyte-Zeichenkodierungen wie UTF-8 sind noch keine richtigen Freunde geworden. Ein paar freundschaftliche Gesten findet man aber schon in einigen Funktionen. Erst mit Version 6 werden beide ein Herz und eine Seele werden. Der bisherige Stand: http://wiki.silverorange.com/UTF-8_Notes

    Die Perl-kompatiblen Funktionen für reguläre Ausdrücke kennen einen Modifizierer, der UTF-8 berücksichtigt. Wie gut oder schlecht das funktioniert kann ich dir allerdings nicht sagen.

    echo "$verabschiedung $name";