preg_match und deutsche Umlaute

Registrierer

Erfahrenes Mitglied
Die Abfrage:
PHP:
$_POST['amtkz'] = 'bö-ba 123';
if (preg_match('#^[äöü ÄÖÜ 0-9 a-z-]+$#i',$_POST['amtkz']))
erlaubt alle Buchstaben, Zahlen, Leerzeichen und den Bindestrich.
Umlaute werden nicht gefunden, warum?

http://regexp-evaluator.de/tutorial/ hat mir leider nicht geholfen.

äöüÄÖÜ funktionierrt auch nicht.
 
Zuletzt bearbeitet:
Also bei mir funktioniert es mit PHP 5.4.4 (ich muss mal wieder aktualisieren ;) ):
Code:
array(1) { [0]=> array(1) { [0]=> string(10) "bö-ba 123" } }
Welche PHP-Version hast denn du?
 
Generell ist das erstmal korrekt, was du dort machst.

Darf ich annehmen, das dies hier:
Code:
$_POST['amtkz'] = 'bö-ba 123';
nur der Veranschaulichung dient, und die Daten sonst per HTTP versendet werden?

Falls ja, prüfe ob Absender(Dokument mit POST-Formular) und Empfänger(PHP-Skript mit der Prüfung) eine identische Kodierung aufweisen.

Falls nicht, schlägt die Prüfung fehl, denn bspw. ein Latin1-Ö ist halt nicht dasselbe wie ein UTF8-Ö

Lösungssansätze wären:
  1. selbe Kodierung für beide Dokumente verwenden, oder
  2. Das accept-charset-Attribut des Absender-Formulars auf den Zeichensatz des Empfänger-Dokuments setzen.
 
Zurück