webseite auslesen stapel abfrage
Connor
- php
0 Felix Riesterer0 Connor0 Connor
0 Tom0 Tom0 Connor
Guten morgen,
leider stehe ich gerade vor folgenden Problem.
Ich möchte mehrere "ID-NRn" gleichzeitig abfragen. Mit einer "ID" gehts tadellos. Aber wie wie kann ich zb. 18 IDs aufeinmal abfragen?
Hier mein Code (Auszug):
$id = "xx"; // zu suchende ID-NR
$host = "www.example.com";
$filestring = file_get_contents($host);
$startpos = 0;
if ($id != ""){
while($pos = strpos($filestring, "id=".$id."\"", $startpos))
{
$lastaction = substr($filestring,$pos,strpos($filestring,"</font></td>", $pos + 1) - $pos);
$startpos = $pos + 1;
}
echo "<b>String komplett:</b> ".$lastaction; // komplettes Suchergbniss
echo "<br><br><b>String aufgeteilt:</b>";// Aufgeteiltes Suchergebnis
if ($id != ""){
echo "<br>Das Letzte mal aktiv war:<b> ".$name = substr($lastaction,8,-17)."</b>";
echo "<br>Am: ". $datum = substr($lastaction,-16,-6);
echo "<br>Um: ".$zeit = substr($lastaction,-5). " Uhr";
}
}
Mit einer ID gehts es super. Aber mit mehreren?
Gruss Connor
P.S. Falls die Frage kommen sollte: Ja ich darf die Seite auslesen. Es wurde vorher mit Excel gemacht, aber ich möchte das auf PHP umstellen.
Lieber Connor,
while($pos = strpos($filestring, "id=".$id.""", $startpos))
{
$lastaction = substr($filestring,$pos,strpos($filestring,"</font></td>", $pos + 1) - $pos);$startpos = $pos + 1;
}
Was machst Du mit $lastaction?
Vielleicht wäre ja [preg_match_all()](http://de2.php.net/manual/en/function.preg-match-all.php) etwas für Dich?
Liebe Grüße,
Felix Riesterer.
--
ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)
Guten Morgen Felix,
Was machst Du mit $lastaction?
Echo von $lastaction ist:
id=479"> Connor 11.01.2011 02:16
Echo von der aufgeteilten $lastaction:
Das Letzte mal aktiv war: Connor
Am: 11.01.2011
Um: 02:16 Uhr
Vielleicht wäre ja preg_match_all() etwas für Dich?
Die Funktion ist mir noch nicht geläufig :-)
Im Prinzip möchte ich aus einer definierten Liste (oder auch array) eine bestimmte Anzahl an ID,s aufeinmal abfragen und dann wie oben ein Ergebnis für jede ID einzeln bekommen.
Gruss Connor
Da fällt mir nochwas ein:
ich hab noch eine andere Abfrage wo ich die Daten so bekomme (var_dump):
string(20690) "Benutzer;letzte Aktion;Hits;Beiträge;Postings;Liga;Userlevel;Usertitle;Reg. seit;Geb.;Forums-ID;PN-Check;ConnorMcleod;11.01.2011 02:16;212,008;102;731;1;60;MOD;10.01.2007 21:18;;479;RedLadyNRW;11.01.2011 00:33;261,696;29;462;1;10;MOD;16.03.2009 18:50;05.03.1966;1111; Und so weiter.....
Da sind die Einträge mit ; getrennt und da sieht man ja das es immer 12 Einträge sind.
Wenn da jemand eine Idee hat wie ich diesen "String" wieder zusammenbauen kann, wäre das einfacher?
Ich kenn mich mit Schleifen leider (noch) nicht aus. Sorry
Gruss Connor
Lieber Connor,
string(20690) "Benutzer;letzte Aktion;Hits;Beiträge;Postings;Liga;Userlevel;Usertitle;Reg. seit;Geb.;Forums-ID;PN-Check;ConnorMcleod;11.01.2011 02:16;212,008;102;731;1;60;MOD;10.01.2007 21:18;;479;RedLadyNRW;11.01.2011 00:33;261,696;29;462;1;10;MOD;16.03.2009 18:50;05.03.1966;1111; Und so weiter.....
das sieht aus, wie eine INI-Datei. Ist es das?
Liebe Grüße,
Felix Riesterer.
Hallo Felix
das sieht aus, wie eine INI-Datei. Ist es das?
Eigentlich ist das nur die ausgelesene WEB Seite nur halt in einer anderen Art.
Lieber Connor,
wenn Du Hilfe willst, dann solltest Du von selbst alle relevanten Infos liefern und Dir nicht erst mühsam aus der Nase ziehen lassen!
Wobei brauchst Du nun Hilfe und was sollte man dazu an Code und Vorgehensweisen Deinerseits alles wissen?
Liebe Grüße,
Felix Riesterer.
Hallo Felix,
wenn Du Hilfe willst, dann solltest Du von selbst alle relevanten Infos liefern und Dir nicht erst mühsam aus der Nase ziehen lassen!
Wobei brauchst Du nun Hilfe und was sollte man dazu an Code und Vorgehensweisen Deinerseits alles wissen?
Tut mir leid wenn ich mich zu umständlich ausdrücke. Vllt ist die NAcht doch zu lange geworden.
Also:
Ich möchte eine Webseite (die z.Zt mit Excel ausgewertet wird) mit PHP auswerten.
Ich hab 2 Möglichkeiten diese WEB Seite auszulesen mit PHP:
Die Erste Möglichkeit war meine Erste Frage: Wie kann ich mehrere ID gleichzeitig abfragen. Mit einer ID gehts lt meinem Ersten Beitrag.
Meine Zweite Möglichkeit die WEB-Seite auszulesen wäre alles in einen String zu schreiben. Dort sind die Werte mit Semikolon getrennt.
Da dort ein Datensatz je 12 Elemente hätte (Semiklon getrennt)
hatte ich die Idee ob diese Zweite Möglichkeit besser wäere um mehrere IDs abzufragen.
ich hoffe ich hab mich besser ausdrücken können.
wie abzufragende WEB-Seite: http://114443.forum.onetwomax.de/whowasonline
Gruss Connor
Lieber Connor,
Vllt ist die NAcht doch zu lange geworden.
offensichtlich, denn Du siehst den Wald vor lauter Bäumen nicht mehr. Wie kommst Du an besagten String? Mir scheint nämlich, dass Du mit dem String glücklicher wirst, als erst reguläre Ausdrücke für preg_match_all() zu lernen. Oder kennst Du Dich bereits damit aus?
Liebe Grüße,
Felix Riesterer.
Hallo Felix,
danke für dein Verständnis
Wie kommst Du an besagten String? Mir scheint nämlich, dass Du mit dem String glücklicher wirst, als erst reguläre Ausdrücke für preg_match_all() zu lernen. Oder kennst Du Dich bereits damit aus?
Leider verstehe ich preg_match_all nicht :-(
An den String komme ich mit folgendem Code:
$url = ("http://114443.forum.onetwomax.de/whowasonline");
$startstring = "<font size=\"2\">";
$endstring = "<";
$file = @fopen ($url,"r");
$i=0;
while (!feof($file)) {
$zeile[$i] = fgets($file,2000);
$i++;
}
fclose($file);
for ($j=0;$j<$i;$j++) {
if ($resa = strstr($zeile[$j],$startstring)) {
$resb = str_replace($startstring, "", $resa);
$endstueck = strstr($resb, $endstring);
$resultat .= str_replace($endstueck,"",$resb);
$resultat .= ";";
}
}
// Ausgabe der Daten
var_dump ($resultat);
Ich gebe zu das ich diesen Code NICHT selber geschrieben habe.
Ich denke wenn man den String in in Array packen könnte, kann ich dann dieses Array dann auslesen/abfragen
Lieber Connor,
Ich denke wenn man den String in in Array packen könnte, kann ich dann dieses Array dann auslesen/abfragen
dann ist $last_actions = [link:http://de.php.net/manual/en/function.explode.php@title=explode](';', $resultat);
Dein Freund.
Liebe Grüße,
Felix Riesterer.
Hallo Felix
dann ist
$last_actions = [link:http://de.php.net/manual/en/function.explode.php@title=explode](';', $resultat);
Dein Freund.
Soviel zu dem Wald den ich nicht gesehen habe. Danke dir.
Jetzt hab ich ein Array.
Mein nächster Gedanke ist nun:
Denke ich da richtig ?
Lieber Connor,
- Das Array $last_actions mit einer Schleife durchlaufen lassen.
- Aus den Ersten 12 Werten den Key machen
- Und immer den die nächsten 12 Werte den Keys zuordnen
Denke ich da richtig ?
ja.
Liebe Grüße,
Felix Riesterer.
Hallo Felix,
leider reichen meine PHP Kenntnisse bezzgl Schleifen nicht aus, um meine WEB-Abfrage erfolgreich mit PHP zu lösen.
Ich hab zahlreiche Versuche mit Codes aus diversen Foren unternommen, aber mir erschliesst sich einfach nicht wie ich das hinbekommen soll.
Mit Excel geht es sehr leicht. Ich werd wohl leider bei Excel bleiben und dann die dort gewonnen Daten weiter umständlich via CSV nach PHP transportieren müssen.
Aber lieben Dank für die Mühe die du dir mit mir gemacht hast.
Lieben Gruss Connor
Hello Felix,
string(20690) "Benutzer;letzte Aktion;Hits;Beiträge;Postings;Liga;Userlevel;Usertitle;Reg. seit;Geb.;Forums-ID;PN-Check;ConnorMcleod;11.01.2011 02:16;212,008;102;731;1;60;MOD;10.01.2007 21:18;;479;RedLadyNRW;11.01.2011 00:33;261,696;29;462;1;10;MOD;16.03.2009 18:50;05.03.1966;1111; Und so weiter.....
das sieht aus, wie eine INI-Datei. Ist es das?
das sieht aus, als habe Connor seine Abfrage aus dem Contents-String mit var_dump() ausgegeben.
Und was da ausgegeben wird, ist ein einfaches (schlechtes) CSV-Format.
Da Connor bei der einfachen Ausgabe mit var_dump die newlines nicht sehen kann, sind die verloren gegangen auf dem Weg in dieses Posting.
Also sollte er den Contents-String mit str_getcsv() zerlegen.
http://de3.php.net/manual/en/function.str-getcsv.php
Dann wird alles plötzlch ganz einfach :-)
Alternativ kann er natürlich auch mit fsockopen() und fgetcsv() arbeiten. Das ist bestimmt technisch gesehen besser wegen der steuerbaren Timeouts, aber wird sein Verständnis zur Zeit noch überstrapazieren.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Hello,
Ich möchte mehrere "ID-NRn" gleichzeitig abfragen. Mit einer "ID" gehts tadellos. Aber wie wie kann ich zb. 18 IDs aufeinmal abfragen?
Dazu solltest Du uns erst einmal das Dateiformat und das Satzformat der Datei verraten.
Hier mein Code (Auszug):
[code lang=php]
$id = "xx"; // zu suchende ID-NR
$host = "www.example.com";
Keine Ressource-Angabe? Nur eine Domain?
$filestring = file_get_contents($host);
$startpos = 0;
if ($id != ""){
while($pos = strpos($filestring, "id=".$id.""", $startpos))
Das müsste dann besser heißen
while(($pos = strpos($filestring, "id=".$id.""", $startpos)) !== false)
Aber mir erscheint das sowieso nicht der praktischste Weg zu sein, solch eine Auswertung vorzunehmen.
Wenn es eine CSV-Datei (o.ä.) sein sollte, die Du da ausliest, nimm besser die dazu passenden Funktionen.
http://de3.php.net/manual/en/function.fgetcsv.php
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Hallo,
$host = "www.example.com";
Keine Ressource-Angabe? Nur eine Domain?
darüber bin ich auch schon gestolpert. Vermutlich beim Anonymisieren/Abstrahieren übers Ziel hinausgeschossen, denn ...
$filestring = file_get_contents($host);
... das würde sonst die Datei "www.example.com" im aktuellen Scriptverzeichnis lesen.
Wenn es eine CSV-Datei (o.ä.) sein sollte, die Du da ausliest, nimm besser die dazu passenden Funktionen.
ACK.
Ciao,
Martin
Hello,
Hier mein Codevorschlag:
<?php ### get_list.php ###
$host = "www.example.com";
$filestring = file_get_contents($host);
if ($filestring === false) return "Fehler beim Seitenzugriff";
$_list = str_getcsv($filestring);
echo "<pre>\r\n";
echo htmlspecialchars(print_r($_list,1));
echo "</pre>\r\n";
?>
Das sollte ein Array anzeigen. Das kannst Du uns dann erstmal posten hier.
Aus dem Array die gesuchten Informationen zu bekommen, sollte dann eine passende Übung für Dich sein ;-))
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Hallo Tom,
ich hab mich nun doch aufgerafft es weiter zu versuchen.
Ich habe deinen Code etwas geändert:
<?php
$host = "http://114443.forum.onetwomax.de/whowasonline";
$filestring = file_get_contents($host);
if ($filestring === false) return "Fehler beim Seitenzugriff";
$_list = str_getcsv($filestring,"\n");
echo "<pre>\r\n";
echo strip_tags(print_r($_list,1));
echo "</pre>\r\n";
?>
Herraus bekomme ich (Auszug):
[244] =>
[245] => ConnorMcleod
[246] => 23.01.2011 10:56
[247] => 214,575
[248] => 103
[249] => 751
[250] => 1
[251] => 60
[252] => MOD
[253] => 10.01.2007 21:18
[254] =>
[255] => 479
[256] =>
[257] =>
[259] =>
[260] =>
[261] =>
[262] =>
[263] =>
[264] =>
[265] => frischer wind2005
[266] => 23.01.2011 10:56
[267] => 224,283
[268] => 3
[269] => 33
[270] => 2
[271] => 5
[272] => Ligist
[273] => 27.05.2007 10:55
[274] => 07.10.1961
[275] => 604
[276] =>
[277] =>
USW.....
Da die von mir zu suchenden Info,s starten:
Key 245 bis Key 255
dann wieder Key 265 bis Key 275
also immer +20 ab Key 245 und dann die Werte der nächsten 10 Keys
Nun hab ich nen Algorismus.
Mein Ziel ist es eine definierte Liste von zb 18 IDs (steht ab Key 255 und Key 275 usw) abzufragen mit den Infos die in den 9 Keys davor stehen.
Ich hoffe ich konnte mein Problem besser darstellen