PHP разрыв строки в массиве

У меня есть три значения поля формы HTML (имя, слова, почта), которые я пытаюсь объединить в php и записать в один файл txt на моем сервере:

Каждое значение должно быть на новой строке в поле txt, поэтому я добавил "\ n" в массив .... где моя ошибка?

Большое спасибо за любую помощь!

$name = $_POST['name'];
$saywords = $_POST['saywords'];
$mail = $_POST['mail'];

$data = array($name,  . "\n" $mail, . "\n" $saywords);

file_put_contents("$t.$ip.txt",$data); // Will put the text to file

file_put_contents ($ file, implode (‘\ n’, $ data)) и удалить новые строки из массива

Daniel Protopopov 17.03.2018 21:25

Зачем вы создаете массив? Вобще $data = $name . "\n" . $mail . "\n" . $saywords;

Magnus Eriksson 17.03.2018 21:25

Идеально! Большое спасибо!! :)

CoderGirlbyday 17.03.2018 21:32
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
3
1 278
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

я не вижу использования array, вы можете объединить их так же:

$data = $name . "\n" . $mail . "\n" . $saywords ;

Идеально! Большое спасибо!!

CoderGirlbyday 17.03.2018 21:31
Ответ принят как подходящий

У вас две проблемы:

  • $data должен быть строкой, а не массивом
  • . объединяет левую и правую части: "abc" . "def" становится "abcdef".
    • ставить точку первой, как в . "\n" или даже . "\n" $mail, не имеет смысла в PHP, поэтому вы получите ошибку синтаксического анализа.

Замените линию $data = на $data = $name . "\n" . $mail . "\n" . $saywords;, и все будет в порядке.

Идеально! Большое спасибо!!

CoderGirlbyday 17.03.2018 21:31

Используйте <br /> как HTML-код

OP сохраняет данные в текстовом файле, а не выводит их, поэтому \n верен (кстати, это не мой голос против).

Magnus Eriksson 17.03.2018 21:26

Это зависит от операционной системы сервера. Попробуйте "\r\n" вместо "\n"

Если вы посмотрите на код OP, есть несколько более серьезных проблем.

Magnus Eriksson 17.03.2018 21:36

Хорошо, вот мой снимок.

/*first of all, you should always check if posted vars are actually set
and not empty. for that, you can use an universal function "empty", which
checks if the variable is set / not null / not an empty string / not 0. 
In such way you will avoid PHP warnings, when some of these variables 
will not be set*/

        $name = !empty($_POST['name']) ? $_POST['name'] : '';
        $saywords = !empty($_POST['saywords']) ? : $_POST['saywords'] : '';;
        $mail = !empty($_POST['mail']) ? $_POST['mail'] : '';

/*Secondly, do not use \n, \r, \r\n, because these are platform specific. 
Use PHP_EOL constant, it will do the job perfectly, by choosing 
what type of line-break to use best.

    As others mentioned - in your scenario, the string would be better solution. 
Add everything into string, and then put its contents into file. Avoid using 
double quotes, when you define PHP strings, and use single quotes instead - for 
performance and cleaner code.

    */


        $data = 'Name: '.$name.PHP_EOL.'E-Mail: '.$mail.PHP_EOL.'Message: '.$saywords.PHP_EOL.PHP_EOL;


        file_put_contents($t.$ip.'.txt', $data); // Will put the text to file

Кстати, я настоятельно рекомендую также добавить дополнительную проверку перед сохранением данных в этот текстовый файл. С помощью этого кода кто-то может легко испортить содержимое вашего txt-файла, опубликовав огромные объемы данных без ограничений.

Советы:

1) Принимайте только имена с ограниченной длиной и символами (не разрешайте использовать специальные символы или разрывы строк - вы также можете отфильтровать их перед сохранением)

2) Подтвердите введенный адрес электронной почты - если он в правильном формате, существуют ли записи mx для домена адреса электронной почты и т. д.

3) Принимать «словечки» с ограниченной длиной, а при необходимости - запрещать или отфильтровывать специальные символы.

Поступая таким образом, вы получите гораздо более чистые материалы.

Другие вопросы по теме