Umlaute in preg_match (REg. Expression) erlauben

Kai-Behncke

Erfahrenes Mitglied
Hallo liebe Leute,

trotz intensiver Suche konnte ich auch über Google für folgendes Problem keine Lösung finden:


Ich möchte dass bei einer Eingae in einem Namensfeld auch Umlaute (öüä) möglich sind (aber keine Zahlen und Sonderzeichen)

Ein
Code:
if ($_POST["input_user_vorname"]=='' OR (!preg_match("#^[a-zA-Zöüä]+$#",$_POST["input_user_vorname"])))

ergibt zwar ein TRUE bei Zahlen und Sonderzeichen (also genau wie es sein soll), aber leider auch bei ö,ü oder ä.

Ich weiß dass mittels
Code:
(!preg_match("#^[\w]+$#"
dann
Umlaute akzeptiert werden (aber leider auch Zahlen und best. Sonderzeichen).

Weiß jemand evtl eine Möglichkeit wie das Problem zu lösen ist?
Danke im Voraus, Kai
 
Das sollte eigentlich gehen wie du es hast, allerdings trifft dein Ausdruck nur die kleinen Umlaute. Setze die Flag i oder erweitere deine Zeichenklasse um die Grossbuchstaben.



Ansonsten:
den 1. Teil der Prüfung auf die leere Zeichenkette kannst du dir eigentlich sparen, denn der 2. Teil deckt auch dies ab :)

Code:
if (!preg_match("#^[a-zöüä]+$#i",$_POST["input_user_vorname"]))
{
  //Fehler
}
 
Zunächst erstmal ein Danke für die Mühe, aber weder ein

Code:
if (!preg_match("#^[\w^1-9]+$#",$_POST["input_user_vorname"]))

(es können dann auch Zahlen eingegeben werden)

noch ein

Code:
if (!preg_match("#^[\W^1-9]+$#",$_POST["input_user_vorname"]))


und auch kein

Code:
if (!preg_match("#^[a-zöüä]+$#",$_POST["input_user_vorname"]))


(öüä geben einen Fehler)

und ebensowenig ein:
Code:
if (!preg_match("/^[\p{L}\-\s]+$/",$_POST["input_user_vorname"]))


bringt die Lösung.

Kann es sein, dass ich vielleicht in der php.ini etwas ändern muss?
So langsam bin ich echt ratlos?
Funktionieren denn die genannten Beispiele bei Euch?

Viele Grüße, Kai
 
Also bei mir funktioniert ein einwandfrei
PHP:
if(!eregi("^[a-zA-Z_äöüÄÖÜ]+$",$_POST["vorname"]))
gut hier nutz ich eregi aber preg_match sollte auch nichts anderes ausgeben (kannst es ja aber gerne mal testen ;) )

mfg Spikaner
 
Zuletzt bearbeitet:
Ach so: Wenn du die Ausdrücke für Unicode-Zeicheneigenschaften nutzen möchtest, müssen die Daten UTF-8-kodiert sein. Doch auch sonst müssen Zeichenkodierung der Daten und des regulären Ausdrucks übereinstimmen.
 
Zurück