2016-05-12 10 views
1

Ich bin neu bei PHP, versuche, über HTML-Formulare zu lernen, aber dieses kleine Problem mit Newline. Der Code unten soll in einem Tabellennamen durch html nehmen, schreiben Sie dann die Eingabe in eine Textdatei:fwrite erstellt keine neue Zeile trotz Verwendung von " n"

html

<form action="maketable.php" method="post" name="input[]"> 
     <fieldset> 
      <legend>Table Info</legend> 
      Enter Table Name: 
      <br> 
      <input type="text" name="input[]"> 
      <br> 
      Enter Value A: 
      <br> 
      <input type="text" name="input[]"> 
      <br> 
      Enter Value B: 
      <br> 
      <input type="text" name="input[]"> 
      <br> 
      <input type="submit"> 
     </fieldset> 
    </form> 

php

$file = fopen("Tables.txt", "w+"); 
if(isset($_POST["input"])) { 
    $input = $_POST["input"]; 
    $table = $input[0]; 
    $A = $input[1]; 
    $B = $input[2]; 

    fwrite($file, $table . "\n"); 
    fwrite($file, $A . "\n"); 
    fwrite($file, $B); 
} else { 
    fwrite($file, "table not set"); 
} 
fclose($file); 

Wenn ich in die Form zu bringen " Tabelle "," A "," B ". Die Textdatei zeigt

tableAB

Ich möchte diese Variablen bekommen eine neue Zeile zwischen ihnen haben, aber . "\n" scheint nicht zu funktionieren. Was mache ich falsch?

+5

Wie überprüft man das? Liest du die Datei mit einem Windows Editor wie Notepad? Oder vielleicht in einem Webbrowser angezeigt? –

+0

Ich habe dies mit einem Notizblock überprüft. Habe es mir in einem Browser angeschaut, und dein Recht, es funktioniert. Danke für die schnelle Resonanz –

+3

Wenn du Cross-Plattform schreiben willst, benutze stattdessen 'PHP_EOL'. Wenn Sie '\ n' verwenden, erkennt Windows es nicht als Zeilenumbruch. Eine neue Zeile in Windows ist '\ r \ n'. Marks Kommentar ist hier sehr relevant. –

Antwort

0

Verwenden Sie '\ r \ n' am Ende (in Windows). '\ n' optimal für Linux.

$line_break = '\r\n'; 

Und schnellere Leistung, wenn Sie diese ersetzen:

fwrite($file, $table . "\n"); 
fwrite($file, $A . "\n"); 
fwrite($file, $B); 

dazu:

$line_break = '\r\n'; 
fwrite($file, $table . $line_break . $A . $line_break . $B . $line_break); 

oder mehr schneller:

$line_break = '\r\n'; 

$write_ok = file_put_contents("Tables.txt", $table . $line_break . $A . $line_break . $B . $line_break); 
if ($write_ok < 4) { // error 

} 
Verwandte Themen