phpbar.de logo

Mailinglisten-Archive

[php] Regex-Frage - preg_match_all()

[php] Regex-Frage - preg_match_all()

Tim Hildebrandt TConnect at gmx.net
Fre Aug 19 17:22:54 CEST 2005


Hallo zusammen,

ich hab's fast geschafft, meine erste komplett eigene RegEx zu generieren
:-) Nun ja, aber ein Problem hab ich noch. Ich habe einen Hyperlink in
dieser Form:

<a href="display:first" class="class:offsetindex">
<img src="../baselines/first.gif" border="0"</a>

Folgende RegEx hab ich dazu geschrieben:

<a[^>].*display:([a-z]+).*class:([-a-z0-9_]+).*>(.*)</a>


wobei die Mehrzeiligkeit durch die entsprechenden Flags am Ende der Pattern
entsprechend konfiguriert wurde...

Ihr seht, dass ich insgesamt drei Komponenten zurück haben möchte:

1. display:(TEXT)
2. class:(Text)
3. Alles innerhalb des A-Tags, also <a...>(TEXT)</a>


Das ganze funktioniert einwandfrei, solange ich innerhalb des Hyperlinks
(Punkt 3) keine schließende spitze Klammer verwende, wie im obigen Beispiel.
Dort fehlt ja beim IMG-Tag die schließende Klammer. Im RegEx-Coach werden
alle Inhalte korrekt markiert. Setzt ich die schließende spitze Klammer am
IMG-Tag oder setze ich einfach nur so eine spitze schließende Klammer, ist
der dritte Match leer. Warum? Ich habe doch als dritte Komponente in den
Pattern (.*) angegeben? Wieso fällt dann ausgerechnet die spitze schließende
Klammer da raus?

Und: Gibt es eine elegantere Schreibweise, die es erlaubt, Position 1 und 2
miteinander zu vertauschen?

Kann mir da jemand von Euch helfen?


Grüße Tim


php::bar PHP Wiki   -   Listenarchive