2016-05-12 20 views
1

我剛接觸php,試圖瞭解html表單,但遇到了換行符這個小問題。下面的代碼應該採取通過HTML表名,然後輸入寫入到一個文本文件:雖然使用「 n」,但fwrite不會創建換行符

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

如果我投入的形式「表「,」A「,」B「。該文本文件顯示

tableAB

我想獲得這些變量之間有一個換行符,但. "\n" 似乎並不奏效。我究竟做錯了什麼?

+5

你如何檢查呢?你是否正在用Windows編輯器如記事本閱讀文件?或者也許在網絡瀏覽器中顯示它? –

+0

我正在用記事本檢查。只是在瀏覽器中查看它,而你的權利,它的工作原理。感謝您的快速響應 –

+3

如果您想編寫交叉平臺,請改用'PHP_EOL'。如果您使用'\ n',Windows將不會將其識別爲換行符。 Windows中的換行符是'\ r \ n'。馬克的評論在這裏很有意義。 –

回答

0

在末尾使用'\ r \ n'(在Windows中)。 '\ n'最適合Linux。如果更換此

$line_break = '\r\n'; 

與更快的性能:

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

這樣:

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

或者更多更快:

$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 

} 
相關問題