phpbar.de logo

Mailinglisten-Archive

AW: [php] RegEx Zeichenkette auf nicht erlaubte Zeichen hinuntersuchen

AW: [php] RegEx Zeichenkette auf nicht erlaubte Zeichen hinuntersuchen

Andreas Lange andreas.lange at haas-media.de
Don Sep 9 11:54:43 CEST 2004


Tim Hildebrandt wrote:
> Hallo Andreas,

>> nimm doch einfach mal die preg_match[1] und folgendes Pattern:
>> 
>> $pattern = '/^[a-zA-ZäöüÄÖÜ\.\- at _]+/';
>> if (!preg_match($pattern,$string)) {
>>    die('foo::bar');
>> }

> Ich habs mal versucht, die Zeichenkette 'lumpi&&&&' geht durch. Also
> irgendwas ist da immer noch nicht ganz klar.

Oups mein Fehler ;-)

$pattern = '/^[a-zA-ZäöüÄÖÜ\.\- at _]+$/';

> Danke. Diese diversen Links sind zum Teil schon bekannt. Aber ich hab halt
> das Problem, dass ich RegEx irgendwie nicht schnalle. Vielleicht sollte ich
> mir mal ein vernünftiges Buch zu dem Thema kaufen und in meinen Urlaub
> mitnehmen ;-) 

Ich habe auch irgendwie viel zu lang gebraucht um die Teile zu raffen.

Die einfachste und verständlichste Erklärung/Vorstellung ist folgende:

Der RegEx Interpreter fängt vorne in Deiner RegEx an geht dann jeden
einzelnen Teilausdruck durch, solang der RegEx Teilausdruck im zu
prüfenden String vorkommt geht fleissig weiter. Es entspricht also
eher einer Ansammlung von nacheinander abzuarbeitenden Prüfverfahren.

Weiterhin muss man sich vorstellen, das der RegEx Interpreter im
Regelfall gierig ist, das heisst, ein Teilausdruck versucht immer so
viel wie möglich auf dem Prüfstring (Greedy) zu holen. Beispiel:

String: fooxxxxxbarxxxxbar
Greedy Pattern:   /foo.*bar/  matcht fooxxxxxbarxxxxbar komplett
UnGreedy Pattern: /foo.*?bar/ matcht fooxxxxxbar

Hmm ... hoffe das konnte ein wenig helfen.

Ansonsten viel selbst rumprobieren und vor allem die Pattern Syntax
studieren, da es schön viele kleine praktische Möglichkeiten gibt.

> Grüße Tim

-- 
Andreas Lange


php::bar PHP Wiki   -   Listenarchive