HTML-Datei auslesen
Sascha
- php
Hallo!
Ich weiß nun nicht mehr, wie es weiter geht.
Ich hoffe, hier kann mir jemand helfen:
Möchte eine HTML-Datei auslesen:
$fd = fread(fopen("http://www.xxxx.asp?AdrID=5837", "r"),100000);
echo $fd;
Problem, Datei wird nicht komplett ausgelesen, liegt aber nicht am Parameter(hier 100000), da ich den schon einige Male verändert habe.
Kann es sein, da in dieser Datei ein iframe ist, dort einfach Schluss ist?
Oder, gibt es evtl. auf dem Server eine Beschränkung, sodass ich nicht aus einem Script auf diese Datei zugreifen kann und diese dann auslesen darf?
Vielen Dank
Sascha
Hello,
Möchte eine HTML-Datei auslesen:
$fd = fread(fopen("http://www.xxxx.asp?AdrID=5837", "r"),100000);
Diese geschachtelte Schreibweise mag zwar eineigen Informatik-Professoren ganz gut gefallen, echte[tm] Programmierer machen sowas aber nicht...
fread(false) ist nicht so glücklich und da es für den Fehlerfall von fopen() zu vermeiden wäre
solltest Du die Fehlermeldungen (rückgabe von false) auch abfragen und darauf reagieren.
Außerdem fehlrt das fclose() aber das kam ja bestimmt noch später ;-))
echo $fd;
Problem, Datei wird nicht komplett ausgelesen, liegt aber nicht am Parameter(hier 100000), da ich den schon einige Male verändert habe.
Kann es sein, da in dieser Datei ein iframe ist, dort einfach Schluss ist?
Oder, gibt es evtl. auf dem Server eine Beschränkung, sodass ich nicht aus einem Script auf diese Datei zugreifen kann und diese dann auslesen darf?
Was wird denn ausgegeben?
Mach doch mal
echo htmlentities($fd);
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hello,
Möchte eine HTML-Datei auslesen:
$fd = fread(fopen("http://www.xxxx.asp?AdrID=5837", "r"),100000);
fread(false) ist nicht so glücklich und da es für den Fehlerfall von fopen() zu vermeiden wäre
solltest Du die Fehlermeldungen (rückgabe von false) auch abfragen und darauf reagieren.
Wieso ist fread() unglücklich, was soll ich sonst verwenden?
Für fopen() wird 1 zurück ausgegeben!
Problem, Datei wird nicht komplett ausgelesen, liegt aber nicht am Parameter(hier 100000), da ich den schon einige Male verändert habe.
Oder, gibt es evtl. auf dem Server eine Beschränkung, sodass ich nicht aus einem Script auf diese Datei zugreifen kann und diese dann auslesen darf?
Was wird denn ausgegeben?
Mach doch mal
echo htmlentities($fd);
Es wird HTML ausgeben, genausoweit, wie ich es auch im Quellcode sehe. Aber halt nicht die ganze Datei
Komisch ist, das Script lief schon, jetzt ohne Veränderung nicht mehr.
Danke für die schnelle Antwort.
Sascha
Hello,
Hello,
Möchte eine HTML-Datei auslesen:
$fd = fread(fopen("http://www.xxxx.asp?AdrID=5837", "r"),100000);fread(false) ist nicht so glücklich und da es für den Fehlerfall von fopen() zu vermeiden wäre
solltest Du die Fehlermeldungen (rückgabe von false) auch abfragen und darauf reagieren.Wieso ist fread() unglücklich, was soll ich sonst verwenden?
Ich habe nicht geschrieben, dass fread() unglücklich ist, sondern fread(false). Das ist ein Unterschied. Wenn nämlich fopen() kein gültiges Handle (in Deinem fall eben die 1) zurückgibt, dann liefert es false ( == 0) und fread(0) ist nicht gestattet. Es löst einen schweren Fehler aus.
$fh = fopen($filename,$openmode);
if($fh)
{
$filecont = fread($fh,MAXREADSIZE); # MAXREADSIZE definiert man sich zweckmäßigerweise
fclose($fh);
}
else
{
# Fehlerbehandlung
}
Wenn man nun den Inhalt der Datei, der in $filecont gespeichert ist, ausgibt an den Browser, wir das ja von dem relativen Pfad des Scriptes aus ausgegeben, und nicht von dem relativen Pfad der Originaldatei.
Zur Probe kannst Du ja mal eine kleine HTML-Datei mit I-Frames und Bildern direkt in das Verzeichnis des Scriptes legen. Dann klappt es nämlich.
Für fopen() wird 1 zurück ausgegeben!
Klar, wenn man ein Handle ausgeben lässt, sieht man nicht viel.
Problem, Datei wird nicht komplett ausgelesen, liegt aber nicht am Parameter(hier 100000), da ich den schon einige Male verändert habe.
siehe oben...
Komisch ist, das Script lief schon, jetzt ohne Veränderung nicht mehr.
Nee, das ist nicht komisch sondern blöd ;-) Du hast das Ganze nur nicht aus der Sicht des Browsers betrachtet, und auch nicht aus der ses Servers, sondern aus der eines Script-Betrachterts...
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
$fh = fopen($filename,$openmode);
if($fh)
{
$filecont = fread($fh,MAXREADSIZE); # MAXREADSIZE definiert man sich zweckmäßigerweise
fclose($fh);
}
else
{
# Fehlerbehandlung
}
Tut mir leid, wenn ich jetzt total auf dem Schlauch sitze, aber auch mit dem Script funzt es nicht. Das Ergebnis ist dasselbe, das ich hatte.
Nee, das ist nicht komisch sondern blöd ;-) Du hast das Ganze nur nicht aus der Sicht des Browsers betrachtet, und auch nicht aus der ses Servers, sondern aus der eines Script-Betrachterts...
OK, wie müsste ich es denn betrachten?
Wie komme ich dann ans Ziel?
Wie ist es zu erklären, dass mit array file (string filename [, int use_include_path]), die Daten korrekt ausgelesen werden?
Hello,
Tut mir leid, wenn ich jetzt total auf dem Schlauch sitze, aber auch mit dem Script funzt es nicht. Das Ergebnis ist dasselbe, das ich hatte.
Ich hatte auch nichts anderes versprochen. Hast Du denn mal den von mir vorgeschlagenen Versuch durchgeführt?
OK, wie müsste ich es denn betrachten?
Immer aus der Sicht des Browsers, denn HTML-Dateien werden immer auf dem Browser ausgewertet, d.h. die Requests durchgeführt, die man per <img>, <frame> usw. auslöst.
Wie ist es zu erklären, dass mit array file (string filename [, int use_include_path]), die Daten korrekt ausgelesen werden?
Das tut mir leid, da stehe ich jetzt auf dem Schlauch.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom