Dateien einlesen mit PHP
Harald
- php
0 Johannes Zeller0 Harald0 Der Martin0 Harald
0 Johannes Zeller0 Tom
Hallo!
Ich würde gerne eine Datei von der Website meines Freundes in meine Seite einbinden => ich möchte sie mit PHP einlesen, substr, str_replace, ... anwenden und da sergebnis in meine Website einbauen. Ich kann auch alles, bis auf das Seite einlesen und wieder schliesen (falls man das machen muss)
mfg
Harald
Hallo Harald,
Ich würde gerne eine Datei von der Website meines Freundes in meine Seite einbinden => ich möchte sie mit PHP einlesen, substr, str_replace, ... anwenden und da sergebnis in meine Website einbauen. Ich kann auch alles, bis auf das Seite einlesen und wieder schliesen (falls man das machen muss)
Falls allow_url_fopen gesetzt ist, ist das kein Problem, du kannst die Seite dann einfach mit fopen() öffnen. Ansonsten musst du selber einen HTTP-Request an den Server absetzen und die Datein runterladen.
Schöne Grüße,
Johannes
Hallo!
Falls allow_url_fopen gesetzt ist, ist das kein Problem, du kannst die Seite dann einfach mit fopen() öffnen. Ansonsten musst du selber einen HTTP-Request an den Server absetzen und die Datein runterladen.
allow_url_fopen ist gesetzt, aber bei diesem Code erhält die var nur die ersten ca. 35 Zeichen, warum?
$filename = "text.html" ;
$dataFile = fopen( $filename, "r" ) ;
if ( $dataFile )
{
$txt = fgets($dataFile, 1000000);
fclose($dataFile);
}
else
{
echo( "fopen failed" ) ;
}
mfg
Harald
Hallo Harald,
allow_url_fopen ist gesetzt, aber bei diesem Code erhält die var nur die ersten ca. 35 Zeichen, warum?
Meine Glaskugel sagt mir dazu: Wahrscheinlich liest du genau die erste Zeile?
if ( $dataFile )
{
$txt = fgets($dataFile, 1000000);
fclose($dataFile);
}
Dir ist schon klar, was fgets() tut? Es liest Zeichen bis zum nächsten Zeilenende, maximal jedoch die im zweiten Parameter angegebene Anzahl.
In deinem Fall wäre also anstatt der Kombination fopen()/fgets() eher file_get_contents() zu empfehlen. Oder -falls dir diese Funktion nicht zur Verfügung steht- Zeile für Zeile immer wieder fgets() aufrufen, bis feof() true liefert.
So long,
Martin
hoppla, ich hab schon lang nichts mehr mit dem fgets gemacht, da ich normalerweise MySQL nutze ...
was kann ich machen, damit ich das Ergebnis der fget-Schleife weiterverarbeiten kann?
=> $txt = str_replace('[nureinBsp]', '[dasErgebnis]', $txt);
mfg
Harald
Hallo Harald,
allow_url_fopen ist gesetzt, aber bei diesem Code erhält die var nur die ersten ca. 35 Zeichen, warum?
$filename = "text.html" ;
$dataFile = fopen( $filename, "r" ) ;
if ( $dataFile )
{
$txt = fgets($dataFile, 1000000);
fclose($dataFile);
}
else
{
echo( "fopen failed" ) ;
}
fgets()
liest immer nur eine Zeile ein. Dein Code müsste also so aussehen:
$filename = "text.html";
$txt = "";
if ($dataFile = fopen($filename, "r")) {
while (!feof($dataFile)) {
$txt .= fgets($dataFile);
}
} else {
echo("fopen failed");
}
Noch einfach geht es allerdings, mit file_get_contents(). Diese Funktion ist zwar erst ab PHP 4.3.0 verfügbar aber inzwischen sollte auf den meisten Servern eine neu genuge Version laufen.
Schöne Grüße,
Johannes
Hello,
allow_url_fopen ist gesetzt, aber bei diesem Code erhält die var nur die ersten ca. 35 Zeichen, warum?
Das liegt einerseits an fgets(), so wie die Anderen es schon erwähnt haben.
Aber auch mit fread() kommst Du nicht unbeingt weiter, da die Socket-Verbindung, die sich in diesem Wrapper-Zugriff versteckt, ggf. ins Stocken kommt, und PHP das leider nicht wirklich transparent abhandelt, sondern einfach aufhört mit dem Lesen.
Es ist also auch bei fread() immer noch notwendig, die entfernten Dateien (HTTP-Ressourcen) über eine Schleife auszulesen.
Harzliche Grüße vom Berg
esst mehr http://www.harte-harzer.de
Tom