Archiv verlassen und diese Seite im Standarddesign anzeigen : RegEx - Frage
Ich möchte per regulärem Ausdruck aus einer HTML-Tabelle ( Ausschnitt s.u. ) die Links ( game.php?get_kolonie=003064007 ) auslesen. Leider häng ich beim regulären Ausdruck.
$links = "/^href='(.*)(?='>)/"Sprich, alles was zwischen "href=´" und "´>" liegt.
Wisst ihr was ich falsch mache?
gcolor='#f0f0f0'><td><a href='game.php?get_kolonie=003064007'>C 3:64:7</td
Wie das schon mehr als nur oft in diesem Forum gesagt wurde, nutzt man für solche Aufgaben einen DOM Parser.
Wenn es denn unbedingt ein regulärer Ausdruck sein muss, würde ich mal deinen etwas bearbeiten und dich ein wenig in eine Richtung schubsen:
"/^href='(.*)(?='>)/"Das ^ am Anfang bedeutet, dass die folgenden Zeichen gleich am Anfang des Strings stehen. Das ist natürlich Müll...
"/href='([^>'\"]+)'/"Was macht das Teil: Es findet eine Zeichenkette "href=", anschließend wird in der Gruppe mindestens ein Zeichen, das NICHT >, ' oder " ist gecaptured. Warum "? eventuell willst du ja mal das Hochkomma durch doppelte Anführungszeichen ersetzen.
Dumm nur, dass du damit alle href Attribute bekommst, sollten die woanders noch rumfliegen.
Deswegen:
http://de.php.net/dom
Manni the Dark
10.05.2009, 14:19
Das problem bei deiner RegExp dürfte die Greedyness (http://www.regular-expressions.info/repeat.html) sein. Also einfach ein ? hinter das .*.
Ansonsten stimme ich meinem Vorposter zu, ein DOM Parser ist für HTML immer besser (eventuell halt ein etwas lockererer auf HTML angepasster, falls man kein XHTML verwendet).
vBulletin® v3.8.6, Copyright ©2000-2012, Jelsoft Enterprises Ltd.