Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

php fopen bzw. fgets

Empfohlene Antworten

Veröffentlicht

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:

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

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.

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 =)

Soooooooo,

also klappt jetzt alles super Vielen Dank so sollte es sein ;)

Der code war perfekt nur den array wert ändern um spezifisch die Zeilen auszulesen.

Danke Carsten ;)

:uli

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.

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.