Michel Gelin: Reguläre Ausdrücke und setlocale()

Hallo zusammen,

ich arbeite an nem Formmailer. Dieser soll anhand Regulärer Ausdrücke (RA) die Felder validieren. Leider bin ich der RA nicht wirklich mächtig: Mir machen die Umlaute Mühe.

Ich habe folgenden Code:

  
setlocale(LC_ALL, 'de_DE');  
[...]  
$pruefung = array(  
 'email' => '/^[\w.+-]{2,}\@[\w.-]{2,}\.[a-z]{2,6}$/',  
 'betreff' => '/^[[:print:]]{3,}$/',  
 'mitteilung' => '/^[[:print:][:space:]]{10,}$/',  
 'namevorname' => '/^[[:print:][:space:]]{3,}$/',  
 'telefon' => '/^[[:print:][:space:]]{0,}$/',  
  )  
[...]  
  if(isset($pruefung[$parameter])) {  
    if(!preg_match($pruefung[$parameter], $wert)){  
[usw.]  

Nun habe ich aber bemerkt, dass [:print:] trotz setlocale die Umlaute nicht zu beachten scheint. Wie kann ich nun die Umlaute und auch das ß integrieren? Macht es überhaupt Sinn mit [:print:] zu arbeiten?
Leider habe ich hier und auch auf google noch keine befriedigende Antwort auf das Problem gefunden :-(

Lieber Gruss,
Michel

  1. Hallo again!
    hm.... frage ich was was schon tausendmal gefragt wurde, oder hat keiner nen guten Lösungsansatz?
    komme einfach nicht weiter mit den zeilen...

    Gruss,
    Michel

  2. echo $begrüßung;

    Die Antwort auf dein Problem kenne ich nicht, aber das sind die Fragen, die ich mir zunächst stellen würde, wenn ich es zu lösen hätte:

    setlocale(LC_ALL, 'de_DE');
    Nun habe ich aber bemerkt, dass [:print:] trotz setlocale die Umlaute nicht zu beachten scheint.

    War das Ausführen von setlocale() von Erfolg gekrönt? Das Handbuch sagt, wie setlocale() im Gut- und Fehlerfall reagiert.

    Wie kann ich nun die Umlaute und auch das ß integrieren?

    Haben die Handbuchseiten zu den Regular Expression Functions (Perl-Compatible) erwähnt, dass setlocales einen Einfluss hat?

    Macht es überhaupt Sinn mit [:print:] zu arbeiten?

    Funktionieren die Posix-Character-Classes mit den Perl-RegExps? Was ergeben Versuche, diese bei einfacheren Fällen zu verwenden?

    echo "$verabschiedung $name";