preg_match und deutsche Umlaute

Darf ich annehmen, das dies hier:
Code:
$_POST['amtkz'] = 'bö-ba 123';
nur der Veranschaulichung dient, und die Daten sonst per HTTP versendet werden?
Ja natürlich, dies ist eine Kontrolle der Eingabe im selben Dokument.
Heisst:
- gib das Kennzeichen ein und schicke das Formular (in der gleichen Datei) ab
- Prüfen, ob das Kennzeichen nur Buchstaben (auch Umlaute), Zahlen, Leerzeichen und einen Bindestrich enthält
- Wenn ja, ok
- wenn nein, Fehler

Und das hängt glaub ich nicht von der PHP Version ab.
 
Ok, dann prüfe mal den Content-Type-Header des Dokumentes. Ist dort ein Zeichensatz dabei, und wenn ja, stimmt er mit der tatsächlichen Codierung überein?
 
Ich hab jetzt endlich einen passenden String um deutsche Kennzeichen zu validieren, bekomme es aber um's V... nicht hin, deutsche Umlaute zu erlauben.
PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<?PHP
if (preg_match('/^[A-Z]{1,3}\s?\-\s?[A-Z]{1,2}\s?\d{1,4}$/i' ,$_POST['amtkz']))
  echo '<h1>'.strtoupper($_POST['amtkz']).'</h1>';
else
  echo '<h1>Fehler</h1>';
?>
<form method="post" action="">
<input name="amtkz" type="text" value="<?PHP echo $_POST['amtkz']; ?>">
<input type="submit" value="Senden">
</form>
</body>
</html>
ÄÖÜ einzufügen geht leider nicht, wer weiß Rat?
 
Warum arbeitest du noch mit dem ISO Zeichensatz... ich würde alles auf utf-8 umstellen, dann wird das leben einfacher. Das Thema wurde übrigens schon hundertfach behandelt und ausgiebig getestet: http://www.php.de/php-einsteiger/92869-eingabe-pruefen-nur-z-z-und-umlaute-zulassen.html
Tatsäxhlich gibt es je nach PHP version einige Unterschiede ;)

Das ist leider nicht so einfach, müßte ich doch das ganze Projekt umstellen und dem Fehlerteufel hinterher schleichen ;-)
PHP:
if (preg_match('/^[A-ZÄÖÜäöü]{1,3}\s?\-\s?[A-ZÄÖÜäöü]{1,2}\s?\d{1,4}$/i' ,$_POST['amtkz']))
funktioniert nicht, welche Lösung wäre hier möglich?
 
PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<?PHP
if (preg_match('#^[A-ZÄÖÜ]{1,3}\s?\-\s?[A-ZÄÖÜ]{1,2}\s?\d{1,4}$#iu' ,$_POST['amtkz']))
  echo '<h1>OK - '.$_POST['amtkz'].'</h1>';
else
  echo '<h1>Fehler - '.$_POST['amtkz'].'</h1>';
?>
<form method="post" action="">
<input name="amtkz" type="text" value="<?PHP echo $_POST['amtkz']; ?>">
<input type="submit" value="Senden">
</form>
</body>
</html>
So sollte die Eingabe von "BÖü - Bä 5678" dem Muster entsprechen, tut es aber nicht.
Es hängt immer noch ausschließlich an den Umlauten.
Eure Hinweise in Bezug auf UTF-8 und die Verweise waren zwar sehr hilfreich, aber nach dessen Umsetzung haben sie leider immer noch nicht den gewünschten Erfolg.
Hat noch jemand ein As im Ärmel?
 
Zurück