• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Auf eine bestimmte Zeile in einem externen Dokument zugreifen

Status
Für weitere Antworten geschlossen.

Ay Chiquita

Neues Mitglied
Hallo!

Ich wollte Euch schon immer mal fragen, ob es möglich ist, auf eine bestimmte Zeile in einem externen (HTML-/PHP-) Dokument zugrückzugreifen und sich die Informationen "daraus zu ziehen", ohne dass man sie selbst irgendwo "abtippt". Ein Beispiel: Die Seite xyz.de/tabelle/ hat in Zeile soundso folgendes stehen:

HTML:
<div>Team: Werder Bremen</div><br>
<div>Punkte: 10</div>

Nun möchte ich nicht nach jedem Spieltag die Punkteliste auf meiner Seite aktualisieren, sondern verlasse mich da auf meine Referenz, die Seite xyz.de/tabelle/, die mir meine Informationen liefert. Ist soetwas möglich?

Ach ja, und bitte: Es geht hierbei um kein konkretes Problem, ich möchte keine BuLi-Tabellen klauen o.Ä., ich möchte es für mich testen und für mich nutzen. Deswegen keine Rechtsbelehrung bitte, ich weiß schon, was ich darf und was nicht :p

Danke Euch!
 
Werbung:
PHP:
preg_match_all("/<div>Team: ([a-zA-Z0-9\-\._ ]*?)<\/div><br> <div>Punkte: ([0-9]*?)<\/div>/", $homeage_quelltext, $ergebnisse);

var_dump($ergebnisse);

// Fehler ausgebessert nur verschrieben und 2 slashes vergessen zu escapen... Ps: Voodoo is doch scheißegal o_O
 
Zuletzt bearbeitet von einem Moderator:
Morgen,
also die Funktion heißt eigentlich preg_match_all ;)
Und dann solltest du nicht / als Delimiter verwenden, da der ja im String vorkommt. Das zweite ungreedy dürfte auch unnötig sein.
PHP:
preg_match_all("#<div>Team: ([a-zA-Z0-9\-\._ ]*?)</div><br> <div>Punkte: ([0-9]*)</div>#",$quelltext,$treffer);
var_dump($treffer);
Gruß
Voodoo
 
Werbung:
mit preg_match dauert das aber relativ lang und man muss die seite jedes mal neu durchsuchen, wenn man mehrere zeilen möchte.
eine ganze seite kann man auch parsen, indem man sie wie ein file behandelt:
PHP:
$zeilen = file("url_zur_seite");

for($i = 0; $i < count($zeilen); $i++)
{
   if(stristr($zeilen[$i],"DEIN_SUCHBEGRIFF")) echo $zeilen[$i];
}
 
file() hat sone sache an sich...

Es gibt hoster, die erlauben es nicht, und es gibt hoster, bei denen man ne einstellung in php.ini ändern muss..


MfG, matibaski
 
besteht bei der letzten alternative auch die möglichkeit, dass ich im quelltext nach bestimmten tag-reihenfolgen suchen kann? mal angenommen, ich weiss, dass die seite immer meine informationen in folgende tags einbettet:

Code:
<span class="class1"><i>15</i></span>

nun würde ich natürlich gerne nur die "15" ausgelesen haben - wie realisiere ich das? denn bei deinem beitrag, sysop, habe ich irgendwie den eindruck, dass er nur innerhalb einer bereits "dargestellten" seite suchen kann, aber nicht im qt. geht soetwas überhaupt?

/e: natürlich auch gerne bei den anderen alternativen; hauptsache, es geht überhaupt irgendwie :p
 
Werbung:
PHP:
preg_match_all("/<span class=\"class1\"><i>([0-9]{1,3}?)<\/i><\/span>/", $homeage_quelltext, $ergebnisse);

var_dump($ergebnisse);

PM schrieb:
Hallo!

Erst einmal wollte ich mich für die nette Hilfe in meinem Thread bedanken.

Leider bin ich nicht sehr PHP-versiert und stehe nun vor dem Problem, dass ich nicht weiß, was ich genau bei "$homepage_quelltext" eintragen soll, schließlich möchte ich ja einen externen Quelltext durchsuchen.

Könnte ich da einen letzten Tipp bekommen?

Wäre wirklich klasse

Beste Grüße

$homepage_quelltext = file_get_contents('http://www.diese.hp/will/ich/haben.html');
 
Zuletzt bearbeitet von einem Moderator:
Vllt. hab ich mich bei der Beschreibung des Problems nicht genau genug ausgedrückt, ich versuch's nochmal - Und diesmal besser.

Ich habe eine bestimmte Seite mit einer bestimmten URL, deren Quelltext ich nach einer ganz bestimmten, in diesem Quelltext einzigartigen Tag-Abfolge durchsuchen möchte, z.B.

<div>Team: Werder Bremen</div><br><div>Punkte: 10</div>
oder z.B. <span class="class1"><i>10</i></span>

Nun kann dort aber nicht nur "10" stehen, sondern auch "0" oder "20", ganz egal. Was sich aber nie ändern wird, ist das "Drumherum"; die Tags, in die die Zahl eingebettet ist.

Nun möchte ich, dass NUR diese Zahl ausgelesen wird, dass ich quasi als "Ergebnisseite" dort stehen hab: "10" - Nichts weiter. Weder Informationen in welcher Zeile was gefunden wurde noch irgendetwas anders. Lediglich die "10" soll ausgelesen werden. Und wenn in der Tabelle "15" steht, steht auch bei mir "15", ohne dass ich es per Hand in irgendeinem Code ändern muss.

Wie kann ich das mit den Ansätzen, die hier stehen, realisieren?
 
hast dus überhaupt probiert ?
genau so wies da steht funktionierts auch, weiss nicht wo das problem sein sollte.

mfg
 
Werbung:
PHP:
$homepage_quelltext = file_get_contents('http://www.diese.hp/will/ich/haben.html');

preg_match_all("/<div>Team: (.*?)<\/div><br><div>Punkte: ([0-9]{1,3})<\/div>|<span class=\"class1\"><i>([0-9]{1,3})<\/i><\/span>/U", $homeage_quelltext, $ergebnisse);

var_dump($ergebnisse);

irgendwie so...
 
Ich kenn mich mit PHP leider gar nicht aus, brauche aber auch nur diesen einen funktionierenden code. Der oben funktioniert leider noch nicht, woran könnte das liegen? Kann mir jemand mit einem genauen / fehlerfreien code helfen?
 
Werbung:
Status
Für weitere Antworten geschlossen.
Zurück
Oben