Zeilenschaltung mitlesen

ZorroZ

Mitglied
Hey zusammen,
ich beschäftige mich z.Z. mit dem Erstellen eines Gästebuches. Ich lassen den HTML Code der Einträge in einer TXT-Datei speichern, so dass ich ihn später mit hilfe eines Variabels an der gewünschten Stelle wieder einfügen kann. Nun habe ich jedoch folgendes Problem:

Wenn man im Formular, welches zum Schreiben eines neuen Beitrages da ist, eine Zeilenschaltung macht wird diese auch so in der TXT-Datei gespeichert. Wenn ich aber später versuche mit diesem Code (
PHP:
$datei = fopen("gb.txt", "r+");
$eintraege = fgets($datei);
) den Text wieder auszulesen wird nur bis zum nächsten Absatz, also der Zeilenschaltung gelesen.

Hat mir jemand ein Tipp, wie ich dem Server erklären kann, dass er bis zum Ender der Datei lesen soll, oder gibt es eine Möglichkeit die Zeilenumbrüche durch einen Befehl zu löschen?! In diesem Forum fand ich auch ein Topic wo erwähnt wurde, dass es mit diesem Befehl klappen würde:

PHP:
$code_n = trim($code);

Hat jedoch nicht geklappt. :confused:
 
Hallo,

fgets liest genau eine Zeile in zu definierender Länge aus. Da du keine Länge angegeben hast, nimmt PHP an, 1024 Bytes dieser Zeile auslesen zu müssen.

Um nun alle Zeilen auszulesen, bedient man sich einer Schleife.
Bsp. aus der PHP Doku:
PHP:
$handle = fopen ("/tmp/inputfile.txt", "r");
while (!feof($handle)) {
    $buffer = fgets($handle, 4096);
    echo $buffer;
}
fclose ($handle);

mfg Bloddy
 
Danke schon einmal.

Leider muss ich dir aber sagen, dass ich aus diesem Code nicht sehr schlau werde. :rolleyes: Und da ich nicht genau weiss was da geschieht, weiss ich auch nicht wie ich diesen Codeabschnitt einfügen soll. Könnte ich jetzt an der Stelle, wo ich den Code aus der Datei einfügen will diesen Code einfügen:

PHP:
<? echo $buffer ?>

TNX, aber trodem schon... :)
Und noch etwas: Ich habe schon seit einiger Zeit Probleme mit While-Schleifen, kannst du mir dein Beispiel einmal erklären?
 
Versuch mal mit folgenden functionen:
file() // gibt dir den Text als array zurück.
reaadfile() // kopiert den Inhalt in den Ausgabepuffer

ab Version 4.3.0 kann's du auch
file_get_contents() benutzen. Gibt dir den ganzen Inhalt als String zurück.

Ich hoffe ich habe deine Frage richtig verstanden.
MfG
 
Hallo,

nochmal mit Kommentaren
PHP:
// Textdatei in Variable (zunächst leer)
$meinGB = '';
// Datei Handle erzeugen, wobei Parameter 1 die Datei 
// inkl. Pfad darstellt 
// und Parameter 2 die Art des Handles festlegt
// - r bedeutet lediglich lesen
$handle = fopen ("/tmp/inputfile.txt", "r");
// solange nicht am Dateiende angelagt (!feof)
while (!feof($handle)) {
    // Zeile an meinGB anhängen, wobei maximal 4096 Byte lang
    $meinGB .= fgets($handle, 4096);
}
// schließen des Datei Handle
fclose ($handle);

mfg Bloddy
 
OK, werde das ganze Drama einmal mit folgendem Code versuchen, hoffe ich habe dich nicht missverstanden:

PHP:
$file = "gb-txt";
$code = file_get_contents($file);

An der Stelle wo ich den Code, welcher ich nun aus der Datei ausgelesen habe, füge ich dann diesen Code ein:

PHP:
<? echo $code ?>
 
@bloddy newbie:
Ahhh, danke, ich glaube jetzt verstehe ich es.

Werde diese Codes einmal testen dann womöglich das Thema schliessen. :rolleyes:
 
Ich hätte da noch eine Idee:
Wieso ersetzt du nicht einfach die Zeilenumbrüche (ich hoffe mal, dass du das mit der "Zeilenschaltung" meinst...) mit <br>? Und das schon beim Eintragen in die Textdatei. So hast du jeden Beitrag in einer Zeile.
Dazu würde ich dann einfach mit
PHP:
$beitrag=nl2br($beitrag);
//Oder, wenn du kein xhtml benutzt
$beitrag=str_replace("\n","<br>",$beitrag);
 
@bled: TNX, diese Frage wollte ich später in einem anderen Topic stellen. Das Problem ist nur folgendes: Auch wenn ich diese Zeilenschaltungen durch <br> ersetzte gibt es immernoch Zeilenschaltungen in der TXT-Date.
 
ZorroZ hat gesagt.:
Das Problem ist nur folgendes: Auch wenn ich diese Zeilenschaltungen durch <br> ersetzte gibt es immernoch Zeilenschaltungen in der TXT-Date.
Das kann doch garnicht sein...
Wie trägst du die Beiträge denn ein? Wenn du alle Zeilenumbrüche vor dem Eintragen ersetzt, dürften nur noch die Zeilenumbrüche zwischen den einzelnen Beiträgen da sein und das ist dann ja wohl gewollt. (Wie will man sonst die Beiträge von einander trennen?)
 
Zurück