Datei lesen
Diverse Möglichkeiten, um eine Datei zu lesen und daraus einzelne Zeilen auszugeben.
Einzelne Zeilen lesen
fopen(), fgets(), fclose()
<?php
// Eine Datei im Modus r zum lesen öffnen
$file="datei_content_raw2.txt";
$fp=fopen($file, "r") // noch kein Semikolon
or die("Konnte $file nicht öffnen"); // Fehlermeldung ausgeben
// lese 1024 Zeichen oder falls vorher fertig bis zum Ende der Zeile
$firstline=fgets($fp, 1024);
$first6=fgets($fp, 6); // lese nur 6 Zeichen
$next=fgets($fp, 10); // lese die nächsten 10 Zeichen
echo "$firstline<br />";
echo "$first6<br />";
// Nur wenn der FilePointer das Ende der Zeile erreicht, wartet er am Anfang der nächsten Zeile!!!<br />
echo "$next<br />";
fclose($fp); // Datei sollte immer geschlossen werden
?>
|Diese Site ist super|http://www.biefer.com
|Das
ist nicht
|Das
ist nicht
Alles Zeilenweise einlesen
<?php
$file="datei_content_raw2.txt";
$fp=fopen($file, "r")
or die("Konnte $file nicht öffnen");
while(! feof($fp)) { // Schleife solange nicht das Ende des Files erreicht wurde
$line=fgets($fp, 1024); // lese Zeile für Zeile
echo "$line<br />"; // und gebe diese aus
}
if ($fp) fclose($fp); // Datei sollte immer geschlossen werden falls sie überhaupt geöffnet wurde
?>
|Diese Site ist super|http://www.biefer.com
|Das ist nicht meine Site|http://www.biefer.ch
|Das ist nicht meine Site|http://www.biefer.ch
Zeichen für Zeichen lesen
fgetc()
Genau so wie oben, aber mit fgetc($fp); // FilePointer geht zum nächsten Zeichen nicht zur nächsten Zeile. (Ich habe einen counter für 10 Linien eingebaut.)
|
D
i
e
s
e
S
i
t
D
i
e
s
e
S
i
t
Ab einer bestimmten Position eine angegebene Menge lesen
fseek(), fread()
<?php
$file="datei_content_raw2.txt";
$fp=fopen($file, "r")
or die("Konnte $file nicht öffnen");
fseek($fp,10); // gehe 10 Zeichen vor
$sweet16=fread($fp, 16); // lese 16 Zeichen und bleibe stehen
echo "$sweet16<p/>"; // und gebe diese aus
fclose($fp); // Datei sollte immer geschlossen werden
?>
e ist super|http
Ab der 2. Hälfte die 2. Hälfte
<?php
$file="datei_content_raw2.txt";
$fp=fopen($file, "r")
or die("Konnte $file nicht öffnen");
// Zum Beispiel ab der 2. Hälfte die 2. Hälfte:
$fsize=filesize($file); // hole Grösse des Files in Bites (=Anschläge)
$fhalf=(int)($fsize/2); // berechne die Hälfte des Files in Bites
echo "Die Dateimitte ist bei: $fhalf Zeichen<br />\n"; // gib Anzahl Zeichen bis zur Filemitte aus
fseek($fp, $fhalf); // gehe zur Filemitte
$teil2=fread($fp,($fsize - $fhalf)); // lese die zweite Filehälfte
echo "<pre>$teil2</pre>"; // gebe die zweite Filehälfte aus
fclose($fp); // Datei sollte immer geschlossen werden
?>
Die Dateimitte ist bei: 45 Zeichen
Das ist nicht meine Site|http://www.biefer.ch
Passt!