PHP запись в многострочный файл

#php

#php

Вопрос:

Я впервые прикасаюсь к PHP, поэтому то, что кажется, что это должно быть простой задачей, до сих пор было для меня довольно долгим проектом между поиском в Google и методом проб и ошибок, но я на финишной прямой с одной незначительной проблемой.

Я пишу форму, в основном для заметок о делах, поэтому я могу заполнить поля, нажать «Отправить», и она помещает все в соответствующий шаблон заметки о делах и записывает его в файл, который будет служить локальной резервной копией, поэтому мне не нужно делать это вручную.

Теперь в моей форме есть следующий раздел для примечаний к обращениям, который, вероятно, содержит несколько строк, абзацев и т. Д

 Case Comments: <br>
<textarea name="comment" rows="10" cols="60"></textarea>
<P ALIGN="right"><input type="submit" name="Submit"></P>
  

Затем на странице вывода формы у меня есть следующее. после некоторого поиска я обнаружил, что для вывода мне пришлось добавить nl2br() для сохранения форматирования комментариев

 <?php $comment = nl2br($_POST["comment"]);
echo $comment; ?><br>
  

Затем у меня есть следующее, чтобы записать его в файл

 $txt = "C:pathtocasenotes.txt";
$fh = fopen($txt, 'a');
fwrite($fh,$comment.PHP_EOL);
fclose($fh)
  

В основном это все записывает просто отлично. Проблема в том, что выводимый тестовый файл заканчивается кодами разрыва строки html между разрывами строк в разделе комментариев, что я и пытаюсь удалить, если это вообще возможно сейчас. это то, что я получаю ниже

 fsthyrew h<br />
<br />
asdfsaf<br />
<br />
<br />
asfd
  

Может быть, кто-нибудь может помочь мне указать правильное направление здесь?

Комментарии:

1. Не вызывайте nl2br() строку, которую вы хотите записать в файл. Это следует использовать только при записи на веб-страницу.

2. Итак, вам нужны два разных формата, один для web и один для текстового файла. Но вы сразу же переводите его в веб-формат. Похоже, вам нужно сохранить nl2br файл, пока вы не отобразите его в Интернете, а не в исходных данных.

3. Использование nl2br выполняется точно так, как он читается, от новой строки до разрыва строки. Вы должны использовать это при выводе на веб-страницу, но не в файл. Для вывода в файл вам потребуется указать символ новой строки, обычно n

Ответ №1:

Сделать:

 fwrite($fh, $_POST['comment'].PHP_EOL);
  

При этом будет записан исходный текст комментария, без перевода новой строки <br/> nl2br() .

Кстати, вы можете сжать эти 4 строки, чтобы записать файл в просто:

 file_put_contents($txt, $_POST['comment'].PHP_EOL, FILE_APPEND);