Seite 1 von 1

[PHP] preg_match_all()

Verfasst: 19. Aug 2007, 16:51
von Roudy
Grüßt euch ;)

Ich habe hier ein Script, welches die 1. 50 User von http://rank.freewartools.com/?welt=W11&race=0&send=1 auslesen soll.

Nun, das ist zum Beispiel ein Auszug aus dem Quelltext, der Zeile des 1. Platzes.
<tr><td>1</td><td><a href="http://88.198.6.23/freewar/internal/fig ... er_id=1239" target="_blank">Bigfoot</td><td>Natla - Händler</td><td>258767</td></tr>

Code: Alles auswählen

<?php
$top50= array();
echo "<pre>";
@$handle= fopen("http://rank.freewartools.com/?welt=W11&race=0&send=1", "rb");
if($handle == false) { echo "Verbindungsfehler"; exit(); }
$content= stream_get_contents($handle);
preg_match_all('/<tr><td>[0-9]+<\/td><td><a href=".+" target="_blank">(\w+)<\/td><td>(.+)<\/td><td>([0-9]+)<\/td><\/tr>/', $content, $match);

$top50= array_merge($top50, $match[1], $match[2], $match[3]);
print_r($top50);
echo "</pre>";
?>

Das Ergebnis ist
Array
(
[0] => sykes
[1] => Natla - Händler
[2] => 23989
)

In $match[0] stehen ja alle Treffer drinnen. Durch den Fehler im Stammquelltext, wo kein </a> gesetzt ist, wird alles durchweg verlinkt mit dem Profil des 1. Users. Außerdem wird mir alles nicht Zeilenweise dargestellt, wie ich es bei einem ähnlichen Script habe, welches mir die User durchweg von youtube.com ausliest.

Hab ich vielleicht einen Fehler in meinem regulärem Ausdruck?

Code: Alles auswählen

preg_match_all('/<tr><td>[0-9]+<\/td><td><a href=".+" target="_blank">(\w+)<\/td><td>(.+)<\/td><td>([0-9]+)<\/td><\/tr>/', $content, $match);

Danke schonmal für die Hilfe
Gruß roudy

Verfasst: 19. Aug 2007, 17:12
von Kakerlake
Hm, und warum nimmst du nicht einfach die komplette Rangliste von Tiramon?
Sollte doch wesentlich weniger Arbeit machen ;)

Verfasst: 19. Aug 2007, 17:16
von Roudy
Wenn du mal nachgeschaut hättest, hättest du gesehen, dass man die Seite nicht einfach so streamen kann.

Liegt an dem JS

Verfasst: 19. Aug 2007, 17:23
von Kakerlake
Und wenn du mal einen Augenblick nachgedacht hättest hättest du gesehen du gesehen das es auch die Userliste als Plaintext zu ziehen gibt ;)

Und im nächsten Schritt wärst du darauf gekommen das es am einfachsten wäre diese in eine Datenbank einzulesen. :idea:

Verfasst: 19. Aug 2007, 17:24
von Roudy
Bei Tiramon gibts die als Plaintext? ^^

Ich sehe nicht wo o.O

Verfasst: 19. Aug 2007, 18:44
von Kakerlake

Verfasst: 19. Aug 2007, 21:02
von Roudy
Problem lag daran, dass ich die ? vergessen hatte und somit .+ gierig war :\ Ich depp ^^