[PHP / REGEX] Ich komme nicht weiter :(

Maddin

dev.
ID: 234104
L
24 April 2006
2.951
215
Hi, also ich möchte aus einem Seitenquelltext nur folgendes auslesen und in einem Array speichern:

<a egal href="egal" class=l egal>egal</a>

Nunja ich versuche das schon seit 2 Stunden :)oops:) aber immer will irgendetwas nich klappen. Habe es mit ^l$ versucht und so weiter aber das mit dem class= will einfach nicht..

PHP:
preg_match_all("/<a.*? href=\"(.*?)\" class=l.*?>(.*?)<\/a>/i",$page,$matches);


foreach ($matches[1] as $link)
{
  echo $link.'<br />';
}

So, das class=L (kleines L - schreibe es nur groß damit man es erkennen kann)...wie muss ich das umschreiben? Ziel ist wie gesagt, dass er alle URLs ausliest, die ein class=l haben. Den Rest soll er da lassen. Und jede URL soll in deser Form gespeichert werden: https://www......

Hoffe der eine oder andere versteht mich :D

Danke
 
Zuletzt bearbeitet:
Das mit Class habe ich nicht ganz verstanden. Was hat das L (oder l) da zu bedeuten. Und müßte nicht das .*? auch in Klammern gesetzt werden? Warum da ein ? hinten dran? Gibt es das nicht immer? Und kommt nach dem "<a" noch etwas, weil du da auch einen regulären Ausdruck hast?

Ich würde es etwa so schreiben (aus dem Kopf):
PHP:
preg_match_all("/<a href=\"(.*)\" class=l(.*)>(.*)<\/a>/i",$page,$matches);

Es sei denn, die einzelnen Sachen können leer sein. Und wenn ich mich nicht ganz irre, dann sollte der Ausdruck hinter class auch noch in Gänsefüßchen stehen (class="l...")

*** Edit
Ha. Du hast deinen Beitrag geändert, während ich meinen geschrieben habe. Sollte aber eigentlich trotzdem funktionieren. Hoffe ich ;)
 
Zuletzt bearbeitet:
Jaein also es funktioniert zwar alles schön und gut, nur leider werden auch andere sachen der seite ausgegeben. Bilder, Texte usw.

Es sollen aber NUR die Links ausgegeben werden. Nur das was mit <a href... beginnt. Und auch NUR die Links, die class=l enthalten.