Zum Inhalt springen

php fopen bzw. fgets


Empfohlene Beiträge

Hallo alle miteinander, :new

ich habe ein kleines problem mit fopen und fgets.

Ich möchte in meinem php skript eine textdatei zeilenweise einlesen. Dies kann man logischerweise mit fopen (um die datei zu öffnen) und fgets (für zeilenweise auslese der datei). Dies gelingt mir aber nur zum teil.

Hier ein Bsp:

Folgende textdatei.

Zeile 1 bzw. 0?: test

Zeile 2: test2

Zeile 3: test3

Zeile 4: test4

Zeile 5: test5

Ich schaffe es mit dem unten geschrieben php code die erste zeile auszulesen, wenn ich jedoch die werte verändere bekomme ich nicht die andere gewollte zeile. Also ich schaffe es nicht zeile 2 oder 5 auszulesen aus welchem grund auch immer.

Hier der php code:


<?PHP
$buffer = fgets($Username);
echo $buffer; // hier kann man hinter der variable $buffer ein komma setzen und hinter dieses kommata ein wert wie 4096 hineinsetzten. //
fclose ($Username);
?>
[/PHP]

Naja hoffe ihr versteht mein problem und könnt mir helfen......

ich glaube es liegt daran das man nicht die genaue Zeile ausgeben kann sondern nur die bits aber kp^^

need einfach help :confused:

Link zu diesem Kommentar
Auf anderen Seiten teilen

hey,

erstmal danke für die antwort.

Ich möchte nciht die ganze datei auslesen sondern nur einzelne zeilen.

in der doku schreiben sie hinter buffer den wert 4096, ich weiß es nciht mehr genau.

Wenn man diesen wert angibt bekommt man die erste zeile. Wenn man diesen wert allerding weglässt bekommt man auch die erste Zeile was ja schwachsinn ist ^.-

Meine frage ist ja, wie muss ich diesen Wert (4096) verändern das nicht die erste zeile angezeigt wird sondern z.b die 3te oder 5te.

Den wert schreibt man direckt hinter:


$ver = 'data.txt';
$buffer = fopen ( $ver, 'r' );
$zahl = fgets ( $buffer, hier muss ein wert eingetragen werden wie bsp: 4096) );
fclose ( $buffer );
$zahl++;
echo $zahl;
[/PHP]

Gruß Crowz

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi,

dann musst du alles einlesen und in ein Array schreiben, was du hinterher entsprechend auslesen kannst:

<?php
$i=0;
$handle = @fopen("/tmp/inputfile.txt", "r");
if ($handle) {
while (!feof($handle)) {
$buffer[$i] = fgets($handle, 4096);
$i++;
}
fclose($handle);
}
// Gibt Zeile 6 aus, weil das Array bei 0 anfängt...
echo $buffer[5];
?>[/PHP]

Wenn man diesen wert allerding weglässt bekommt man auch die erste Zeile was ja schwachsinn ist ^.-

Ob du beurteilen kannst, dass das Schwachsinn ist, lass ich mal im Raum stehen. Warum das so ist, hättest du gewusst, wenn du den entsprechenden Text gelesen hättest.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ob du beurteilen kannst, dass das Schwachsinn ist, lass ich mal im Raum stehen. Warum das so ist, hättest du gewusst, wenn du den entsprechenden Text gelesen hättest.

warum ist es denn dann so? Gbit doch keinen sinn wenn man 4096 als wert angibt und das gleiche ergebniss bringt wie 0?!

TROTZDEM vielen dank für deine Hilfe denke ich bekomme das jetzt hin schreibe es aber nochmal mit dem richtigen code wenn es klappt =)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi,

wenn du keinen Wert angibst, wird 1024 angenommen, was heisst, dass nur bis zu 1024 Zeichen eingelesen werden. Es könnte jetzt aber sein, dass du nur 3 Bytes lesen möchtest, dann gibst du eine 3 an. Nur weil das in einem Fall nicht zum Tragen kommt, kann es durchaus Szenarien geben, in denen das sinnvoll ist.

In einer Schleife wie der oben kommt merkt man das natürlich auch nicht, weil die läuft, bis das Dateiende erreicht ist. Natürlich liest sie pro Durchlauf immer entweder die Anzahl der angegeben Bytes auf einmal, oder eben 1024 ein.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...