Powl: RegEx

Beitrag lesen

Hallo,

Wenn ich folgenden Code PHP5 parsen lasse:

if (preg_match("@^[a-zA-Z äöüÄÖÜß-_]{1,40}$@", $_POST['foo'])) {  
  mach was();  
}

erhalte ich folgenden Fehler:

Warning: preg_match() [function.preg-match]: Compilation failed: range out of order in character class at offset 13 in /foo/bar/baz/bla.php on line xy
bei
preg_match("@^[\w äöüÄÖÜß-_]{1,40}$@", $_POST['foo']))
genauso.

Ich finde bei Google zwar elend viele Seiten, wo der auch Fehler auftritt, aber keine die es mir verständlich machen könnte, wie man ihn los wird.

Was habe ich hier falsch gemacht, und was muss ich ändern, damit auf alle Buchstaben incl. Umlaute und ß sowie - und _ und Leerzeichen matched?

Nächste Frage, wenn ich Zeilenumbrüche aus $_Post[$k] entfernen möchte, wäre es  dann sinnvoller so:
$_POST[$k] = preg_replace("!\015\012|\012|\015!", "", $_POST[$k]);
oder so
$_POST[$k] = preg_replace("!\n\r|\n|\r!", "", $_POST[$k]);
funktionieren müssten doch beide, oder?
Vieleicht gibt es noch eine bessere Möglichkeit?

dankbar für jeden hilfreichen Hinweis

netten Tag
^da Powl

--
===============================
powl.hat-gar-keine-homepage.de/