Mailinglisten-Archive |
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