По умолчанию в файлах CSV в качестве разделителя полей используется запятая, поэтому, если значение содержит запятые, его необходимо заключать в кавычки так же, как и в случае пробелов.Если вы используете "file_put_contents", вам нужно сделать это вручную с помощью чего-то вроде этого:
<?php
//read data from form
$food = filter_input(INPUT_POST, "food");
$output = preg_match('/[, ]/', $food) ? "\"$food\"\n" : "$food\n";
file_put_contents('input.csv', $output, FILE_APPEND);
?>
Функция "preg_match" проверяет $ food на запятые или пробелы и, если они найдены, $ food имеет двойные кавычки идобавляется перевод строки, в противном случае добавляется только перевод строки.
Обратите также внимание, что вам не нужно проверять, существует ли файл, потому что, если его нет, функция file_put_contents автоматически создает его независимо от того, существует он или нет.Вы используете флаг FILE_APPEND.
Но гораздо лучшим решением было бы использование специальных функций CSV, которые автоматически выполняют любые необходимые кавычки или экранирование:
<?php
//read data from form
$food = filter_input(INPUT_POST, "food");
$fields = array($food);
$fp = fopen('input.csv', 'a+');
fputcsv($fp, $fields);
fclose($fp);
?>
Использование fopen в "a +msgstr "mode заставляет его действовать так же, как file_put_contents, с флагом FILE_APPEND.Так что нет необходимости проверять, существует ли файл здесь заранее.