2016-05-12 74 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 

} 
相关问题