PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Betsimmte INfos aus einer fremden HTML Seite in ein Array einlesen


Wauzy
01.10.2003, 09:08:46
Hallo

Ich habe folgendes Problem:

Ich möchte gerne aus einer Seite wo bestimmte Statistiken stehen genau diese Auslesen und halt nur diese.

Normalerweise würde ich das mit file(url.php) machen, dann hätte ich schon mal jede Zeile einzelnd in einem Array.

Ich brauche nun aber nur ein paar bestimmte Zeilen, ich markiere die hier in dem Quelltext mal. ( Ist natürlich nur ein Ausschnitt, der ganze Quelltext ist viel größer, so das eine begrenzung der Suche auch ganz gut wäre da nachdem die Info gefunden wurde ja nicht weiter gesucht werden muß)

<tr>

<td width="50%"><font face="Verdana" size="2"><b>Anzahl der Mitglieder:</b></font></td>
<td width="50%"><font face="Verdana" size="2">15</font></td>
</tr>
<tr>
<td width="50%"><b><font face="Verdana" size="2">Homepage:</font></b></td>
<td width="50%"><a target="_blank" href="http://fkk-clan.com"><font face="Verdana" size="2">http://fkk-clan.com</font></a></td>
</tr>

<tr>
<tr>
<td width="50%"><b><font face="Verdana" size="2">IRC Channel: </font> </b></td>
<td width="50%"><font face="Verdana" size="2"></font></td>
</tr>
<tr>
<td width="50%"><b><font face="Verdana" size="2">IRC Server: </font> </b></td>

<td width="50%"><font face="Verdana" size="2"></font></td>
</tr>
<tr>
<td width="50%"><b><font face="Verdana" size="2">Clan Server: </font> </b></td>
<td width="50%"><font face="Verdana" size="2">195.4.17.205:1716</font></td>
</tr>
</table>

<hr width="100%" color="374646" noShade SIZE="1">
<table cellpadding="0" cellspacing="0" width="100%">
<tr>
<td width="50%"><font face="Verdana" size="2"><b>Herkunftsland:</b></font></td>
<td width="50%"><font face="Verdana" size="2">Deutschland</font></td>
</tr>
</table>
<hr width="100%" color="374646" noShade SIZE="1">

<table cellpadding="0" cellspacing="0" width="100%">
<tr>

-------------------------------------------------<Von hier aus>------------

<td width="50%"><font face="Verdana" size="2"><b>Aktuelle Punkteanzahl:</b></font></td>
<td width="50%"><font face="Verdana" size="2">22</font></td>
</tr>
<tr>
<td width="50%"><font face="Verdana" size="2"><b>Gewonnene Clan Wars:</b></font></td>

<td width="50%"><font face="Verdana" size="2">11</font></td>
</tr>
<tr>
<td width="50%"><font face="Verdana" size="2"><b>Unentschiedene Clan Wars:</b></font></td>
<td width="50%"><font face="Verdana" size="2">4</font></td>
</tr>
<tr>

<td width="50%"><font face="Verdana" size="2"><b>Verlorene Clan Wars:</b></font></td>
<td width="50%"><font face="Verdana" size="2">12</font></td>
</tr>
<tr>
<td width="50%"><font face="Verdana" size="2"><b>ROE Punkte:</b></font></td>
<td width="50%"><font face="Verdana" size="2">0</font></td>
</tr>



-----------------------<bis hier>--------------------------------------------


<tr>
<td width="50%"><font face="Verdana" size="2"><b>Clan Bewertung:</b></font></td>
<td width="50%"><font face="Verdana" size="2">

<p><table cellpadding=1 cellspacing=0 border=0>
<tr>
<td>
<table cellpadding=0 cellspacing=0 border=0 bgcolor="000000" width="171">
<tr>


Irgendwelche Ideen wie ich die Informationen raus filtern kann?

MFG
Wauzy

Nev
01.10.2003, 10:48:24
Hi Wauzy

Um das fopen kommst du nicht herum.

du musst es dann Zeilenweise durchparsen und nach deinem Anfang-Scannen.
Falls dieser gefunden wurde, schreibst du das in eine Variable.
Wenn du deinen Ende-Tag gefunden hast, hörst du dann auf

so könnte das ganze Ausschaun
$Site_Content = fopen("$URL","r");
if(!$Site_Content) {
echo "Zur Zeit nicht erreichbar<br>n";
} else {
$Before = true;
while(! feof($Site_Content) ) {
$line = @ltrim(Chop(fgets($Site_Content, 256)));
if (strstr($line, "Aktuelle Punkteanzahl") || !$Before) {
$Before = false;
$line = str_replace("<div id="inhalt">", "", $line);
$New_Site_Content .= $line."nr";
}
if (!$Before || strstr($line, "Clan Bewertung") {
break;
}
}
}
echo $New_Site_Content;

Wauzy
01.10.2003, 16:29:22
Das sieht sehr gut aus!

Ich habe auch viel drüber nachgedacht und bin zu einer änlichen Idee gekommen.

Werde mal schauen wie der Code zum Schluß aussieht, cih werde ihn hier posten wenn er fertig ist.

Danke aber schon mla für den Anstoß und die Richtung, den Weg sollte ich hoffentlich selber finden.

MFG
Wauzy

beginner21
18.06.2004, 16:07:42
Sorry, im falschem bereich gepostet ...

hi nochmal.

ich hab hier nun etwas zusammengebastelt was funktioniert (dank euch ;-) )


if(!$HTML_INHALT) {
echo "";
} else {
$Before = true;
while(! feof($HTML_INHALT)) {

$line = @ltrim(Chop(fgets($HTML_INHALT, 2048)));
if (strstr($line, '<p title="Name" class="Name">') || !$Before) {
$Before = false;
$line = str_replace('<p title="Name" class="Name">', "", $line);
$tracks_num1 = $line;

}
if (!$Before || strstr($line, "Testtitle")) {
break;
}
}
}


Nun ist mein problem dass es mehrere Felder gibt die gleich heißen und ich brauche alle untereinander. Hab es mit for versucht - komme aber auf keinen grünen zweig.

Kann mir da bitte jemand helfen ?
Das einzige was ich sicher weiß sind die namen die es gesamt gibt. (also eine zahl die auf der seite dargestellt wird)


Bitte Hilfe !

tapferesschneid
22.06.2004, 13:37:14
<?php
$url = 'http://www.server.de/stat.html';
$html = file_get_contents($url);
$needle = '#<tr[^>]*>s*(<td.+</td>)s*(<td.+</td>)s*</tr>#Uis';
preg_match_all($needle, $html, $ziel_array);

foreach ($ziel_array[1] AS $key => $val)
echo strip_tags($val).' '.strip_tags($ziel_array[2][$key]).'<br>';

?>Viel Spaß ...

beginner21
22.06.2004, 13:43:54
hi

danke.

habs nun so geschafft (für die nachwelt): (Auszug)

if (!($fp = fopen($url, "r")))
exit("Unable to open the input file.");
while (!feof($fp))
{
$buffer = fgets($fp, 1024);
if (strstr($buffer, '<p title="Titel" class="title">')){
$preline = str_replace('<p title="Titel" class="title">', "", $buffer);
$line = '<tr>' . "n" . '<td style="font-size:10px">';
$line .= $preline;
$line .= '</td>' . "n";
$gleich_0 = $line;
echo $line;
}
}
fclose($fp);