phpbar.de logo

Mailinglisten-Archive

[php] Frage zu Regulären Ausdrücken und utf-8

[php] Frage zu Regulären Ausdrücken und utf-8

Yannik Hampe yannik at cipher-code.de
Fre Feb 29 21:16:40 CET 2008



Armin Briatta wrote:
> Einen schönen Abend an alle,
> 
> ich stehe auf dem Schlauch mit regulären Ausdrücken.
> Ich habe folgendens gebaut:
> 
> if(!preg_match("/^[[:alpha:]]{1,18}(([ 
> ]|-|\.){0,2}[[:alpha:]]+\.?){0,6}([ ])?(\-)?([ 
> 123456789]{0,4}?[\.]?)?$/u" ,$_original)) return false;
> 
> Es sollen damit Eingaben von Namen in einem Formular getestet werden.
> 
> Jetzt habe ich zum ersten Mal überall mit charset utf-8 gearbeitet.
> 
> Ich habe lokal den Apache (Xampp) installiert (Windows). Wenn ich an den 
> regulären Ausdruck ein \u anhänge, so werden im Formular alle möglichen 
> Sonderzeichen akzeptiert (deutsche Umlaute usw.). Auf dem Server (1und1) 
> funktioniert dies aber nur, wenn ich alle Umlaute, welche akzeptiert 
> werden sollen, noch einmal explizit angebe, also z.B: [[:alpha:]äöüÄÖÜß].
> 
> Wo kann mein Fehler liegen? Gibt es da einen eleganteren Weg?

Ich würde dich gerne auf die Nette Tabelle verweisen, die du findest,
wenn du hier:
http://www.regular-expressions.info/refflavors.html
Nach gaaaanz unten scrollst. Dort steht wie die "POSIX Bracket
Expressions" von verschiedenen Parsern behandelt werden. Bei der PCRE
steht nur "ascii", was bedeutet, dass nur Zeichem, die zu ascii gehören
akzeptiert werden.
Das steht auch ganz explizit so in der Doku der PCRE:
"In PCRE, \d, \D, \s, \S, \w, and \W recognize only ASCII characters."
und
"In PCRE, POSIX character set names recognize only ASCII characters."
http://www.pcre.org/pcre.txt

Was \u angeht steht dort sogar:
"The  following Perl escape sequences are not supported: \l, \u, \L, \U,
and \N. In fact these are implemented by Perl's general string-handling
 and are not part of its pattern matching engine. If any of these are
encountered by PCRE, an error is generated."

Ich frage mich daher eher, warum es unter Windows funktioniert.
Allerdings haben wir das Problem im Thread "Treffer mit Regex erweitern"
auch schon gehabt.


> 
> Grüße
> Armin Briatta

Yannik

php::bar PHP Wiki   -   Listenarchive