Links finden
Ana
- php
Hallo,
ich habe eine String in dem viele Links vorkommen, wie z.B. dieser hier:
<a href="/file.php?lg=us&id=3264" class="last">download</a>
ich möchte mit preg_match_all() alle "file.php?lg=us&id=xxxx" herrausfinden.
Ich habe bis jetzt nur mit strpos und substr gearbeitet, kann mir jemand ein passendes Beispiel, oder sogar den fertigen Ausdruck geben?
Liebe Grüße, Ana
Hello,
ich habe eine String in dem viele Links vorkommen, wie z.B. dieser hier:
<a href="/file.php?lg=us&id=3264" class="last">download</a>
ich möchte mit preg_match_all() alle "file.php?lg=us&id=xxxx" herrausfinden.
Guck mal, ob Dir das weiterhilft
$_a = array();
// 1 2 3 4 <5> 6 7
$pattern = '=^(.*?)(<area|<a|<img)(.*?)(href=|src=)"|'"|'(>.*$|>.*?</a>.*$)=msi';
$anz = preg_match_all($pattern, $page, $_a))
in $_a[4][$i] müssten dann die gesuchten Teile stehen... (hoffe ich)
Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de
Tom
Hello,
ich habe noch ein wenig damit herumgebastelt.
$page = file_get_contents('http://forum.de.selfhtml.org/');
$_urls = array();
$pattern = '=<a.*?href=("|')?([^"']*)\1[^>]*>=i';
preg_match_all($pattern, $page, $_urls);
echo "<pre>\n";
echo htmlspecialchars(print_r($_urls,1));
echo "</pre>\n";
Das funktioniert zwar, ist aber bestimmt nicht wirklich richtig
<a genau finden
.*? weiterlesen, aber nicht "greedy", Zeichen ist egal, aber kein Zeilenumbruch [1]
href genau finden
= genau finden, escaped, weil = als Pattern-Begrenzung benutzt wurde
("|')? keinmal bis einmal ein doppeltes oder ein einfaches Häkchen
das einfache escaped für PHP, als Treffergruppe zusammengefasst
für Backreferenz
([^"']*) gesuchte Daten, als Treffergruppe gebunden ()
[^"']* darf kein doppeltes und kein einfaches Häkchen sein.
einfaches wieder für PHP escaped, beliebig oft
Hier hätte ich nun auch gerne die Backreferenz benutzt, geht aber nicht :-((
\1 genau suchen, das Häkchen, mit dem der String begonnen wurde
Backreferenz auf erste Treffergruppe
[^>]* keine spitze Klammer, beliebig oft
Spitze Klammer genau finden
Ich wüsste gerne, wie man auch in der Zeichenklasse [^"'] die Backreferenz nutzen könnte
und ausßerdem natürlich, wie das Gesamtkunstwerk richtig wäre und warum...
[1] über den Zeilenumbruch hinwegzulesen, wäre hier sicher besser ...
Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de
Tom