2016-05-12 4 views
1

Я новичок в php, пытаясь узнать о html-формах, но имея эту небольшую проблему с новой строкой. Ниже код должен взять в имени таблицы с помощью HTML, а затем записать ввод в текстовый файл:fwrite не создает новую строку, несмотря на использование « 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); 

Если я кладу в форму " таблица "," A "," B ". Текстовый файл показывает

tableAB

Я хотел бы получить эти переменные, чтобы иметь символ новой строки между ними, но, кажется, не работает . "\n" . Что я делаю не так?

+5

Как вы проверить это? Вы читаете файл с редактором Windows, например, в блокноте? Или, возможно, отображать его в веб-браузере? –

+0

Я проверял это с помощью блокнота. Просто посмотрел на него в браузере, и ваше право, это работает. Спасибо за быстрый ответ –

+3

Если вы хотите написать cross-plattform, вместо этого используйте '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 

}