Regular expression - Prozentzeichen abfragen %

Regular expression - Prozentzeichen abfragen %

am 21.03.2006 10:39:50 von Tino Korth

Hi,

habe ein wenig Zeit investiert, um herauszufinden, wie man ein
Prozentzeichen in einer RegEx-Klasse abfragt.


Was nicht funktionierte:

if (!eregi('^[a-zA-Z0-9_-%]+$', $txt)) {
print "falsches Zeichen!";
}



Das funktionierte dann aber:

if (!eregi('^[a-zA-Z0-9%_-]+$', $txt)) {
print "falsches Zeichen!";
}


Also einfach das Prozentzeichen vom Ende der Klasse entfernen und
irgendwo in der Mitte platzieren.
Wollte das nur mal in d.c.l.p.m posten, falls noch mal jemand so ein
Problem hat.

Evtl. kann mir einer erklären, warum sich das so verhält?!

Danke! :-)



Grüße,

Tino


--
TK79Formel1 - der kostenlose Formel 1-Newsletter
http://www.tk79formel1.de

Re: Regular expression - Prozentzeichen abfragen %

am 21.03.2006 10:58:28 von Ulf Kadner

Tino Korth wrote:

> Was nicht funktionierte:
>
> if (!eregi('^[a-zA-Z0-9_-%]+$', $txt)) {
> print "falsches Zeichen!";
> }

ereg* ist tot! Bitte verwende preg_*

[a-zA-Z0-9_-%] Diese Zeichenklasse kann so nicht funktionieren,
da _-% angenommen wird. Der Bindestrich repaesentiert in dem Fall das
wort "bis".

[\w%-]+ (ist gleich zu [a-zA-Z0-9_%-]+ nur halt etwas kuerzer)

> Also einfach das Prozentzeichen vom Ende der Klasse entfernen und
> irgendwo in der Mitte platzieren.

Wenn ein Bindestrich nicht am Ende (oder Anfang) steht, wird er als
Bereichstrenner genutzt, was Du ja nicht willst.

MfG, Ulf

Re: Regular expression - Prozentzeichen abfragen %

am 21.03.2006 15:56:49 von Niels Braczek

Ulf Kadner schrieb:

> [\w%-]+ (ist gleich zu [a-zA-Z0-9_%-]+ nur halt etwas kuerzer)

Fast. Hängt vom eingestellten Locale ab.

MfG
Niels

--
| http://www.kolleg.de · Das Portal der Kollegs in Deutschland |
| http://www.bsds.de · BSDS Braczek Software- und DatenSysteme |
| Webdesign · Webhosting · E-Commerce · Mambo Content Management |
------------------------------------------------------------ ----

Re: Regular expression - Prozentzeichen abfragen %

am 21.03.2006 23:06:04 von Ulf Kadner

Niels Braczek wrote:

>>[\w%-]+ (ist gleich zu [a-zA-Z0-9_%-]+ nur halt etwas kuerzer)
>
>
> Fast. Hängt vom eingestellten Locale ab.

Ja, stimmt! Man kann eigentlich nicht vom deutschen Locale als default
ausgehen.

MfG, Ulf