Функция php file() создает кавычки и запятые

Я пытаюсь написать некоторый php-код, который принимает $_GET-данные в качестве входных данных и сохраняет их в csv-файле. При запуске кода более одного раза мой CSV-файл выглядит так:

Date,Time,Temperature,"Air Humidity","Soil Humidity",Light,"Wind Direction","Wind Speed",Rain
2013-03-16,16:24:27,12,80,40,82,255,10,0
"2013-03-16,16:24:26,12,80,40,82,255,10,0
","""2013-03-16,16:24:26,12,80,40,82,255,10,0
",""",""""""2013-03-16,16:24:25,12,80,40,82,255,10,0
",""","""""",""""
",""",""""""
","""
"

Как видите, программа добавляет кавычки и запятые в мои данные, которые мне не нужны. По-видимому, это делается с помощью "file("weather_data.csv")", но я не знаю, как отключить или обойти это.

Это мой код сейчас:

<?php

// Save received data into variables:
$temperature  = $_GET["t"];
$airHumidity  = $_GET["ha"];
$soilHumidity = $_GET["hs"];
$light        = $_GET["l"];
$windDir      = $_GET["wd"];
$windSpeed    = $_GET["ws"];
$rain         = $_GET["r"];

// Arrays for the column descriptor (first line in the csv-file) and the recent data:
$columnDescriptor = array("Date","Time","Temperature","Air Humidity","Soil Humidity","Light","Wind Direction","Wind Speed","Rain");
$recentData       = array(date("Y-m-d"),date("H:i:s"),$temperature,$airHumidity,$soilHumidity,$light,$windDir,$windSpeed,$rain);

$fileContents = file("weather_data.csv");
array_shift($fileContents); // removes first field of $fileContents

$file = fopen("weather_data.csv","w");

fputcsv($file,$columnDescriptor);
fputcsv($file,$recentData);
fputcsv($file,$fileContents);

fclose($file);

?>

1 ответ

Решение

$fileContents читается как массив строк, по одной записи на строку файла CSV, но фактические данные CSV не анализируются. Последний fputcsv пытается записать эти данные как CSV и избегает их (добавляя кавычки и прочее). Вам нужно добавить старое содержимое файла ($fileContents) в ваш файл с помощью fwrite вместо fputcsv:

fwrite($file, implode("\n", $fileContents));
Другие вопросы по тегам