PHP preg_match_all

TheLucifer

Der Schein trügt..
ID: 201230
L
17 Juni 2006
1.065
175
Hallo

mit
PHP:
preg_match_all("/<a(?:[^>]*)href=\"([^\"]*)\"(?:[^>]*)>(?:[^<]*)<\/a>/is", $stripped_file, $matches);

bekomme ich alle a tags von einer Seite, ich möchte aber nur links einer speziellen klasse haben ... z.b. der klasse: class="zwei drei"

also alle Links die <a class="zwei drei" href=".........."

wie muss dieser teil geändert werden?

preg_match_all("/<a(?:[^>]*)href=\"([^\"]*)\"(?:[^>]*)>(?:[^<]*)<\/a>/is", $stripped_file, $matches);

ich suche schon die ganze zeit bei google ... aber ich weiß nicht so richtig was ich suchen soll :( ... ich bin der totale php Fisch ...

MFG
TL
 
ahhhh ... ich was gefunden^^

PHP:
preg_match_all("/<a.class=.zwei.drei..href=\"([^\"]*)\"(?:[^>]*)>(?:[^<]*)<\/a>/is", $stripped_file, $matches);

so funzt es :p aber ob das der eleganteste weg ist?^^
 
Der Punkt steht für ein beliebiges Zeichen. D.h.
Code:
<a class$%zwei{drei\°href="..........">Foo</a>
matcht auch. Willst du das? :LOL: Wahrscheinlich nicht ;)

Schreibs halt so, wie es auch wirklich auftaucht. Jokerzeichen nicht aus Faulheit benutzen, sondern nur, wenn du sie auch brauchst.

Problem bei deinem Ausdruck: class muss immer direkt vor dem href stehen. Sind die Attribute mal vertauscht, oder ist ein zusätzliches Attribut dazwischen, matcht es nicht. Musst du wissen, ob dir das so genügt.
 
Wenn ich es so schreibe kommt aber ein Fehler. :-?

PHP:
preg_match_all("/<a class="zwei drei" href=\"([^\"]*)\"(?:[^>]*)>(?:[^<]*)<\/a>/is", $stripped_file, $matches);
 
Quoting Problem?

Nimm <a class=\"zwei drei\". Ging doch bei href=\"([^\"]*)\" auch, außerdem sollte man sowieso Single Quoting bei Verwendung von Regulären Ausdrücken benutzen. :naughty: