Я пытаюсь прочитать данные из файла .csv, чтобы вывести их на веб-страницу в виде текста.
Я впервые делаю это, и у меня возникла небольшая неприятная проблема.
Мой файл .csv (который по умолчанию открывается в Excel) содержит несколько строк, и я читаю всю вещь как одну длинную строку.
как это:
$contents = file_get_contents("files/data.csv");
В этом примере файла, который я сделал, есть 2 строки.
Пол Блуберри-роуд
85 фонарик США, сумка 20 ноября,
2008, 16:39
Hellen Blueberryroad
85 us объектив 13мм, фонарик, сумка, ExtraBatteries ноябрь
20, 2008, 16: 41: 32
Но читаемая PHP строка выглядит так:
Пол; Blueberryroad 85; нас; фонарик, сумка; 20 ноября 2008 г., 16:39 Хеллен; Blueberryroad 85; нас; объектив 13 мм, фонарик, сумка, ExtraBatteries; 20 ноября 2008 г., 16: 41: 32
Я делю это на:
list($name[], $street[], $country[], $accessories[], $orderdate[]) = split(";",$contents);
То, что я хочу, это чтобы $ name [] содержал «Paul» и «Hellen» в качестве содержимого. И другие массивы для получения значений их соответствующих столбцов.
Вместо этого я получаю только Пола, а содержимое $ orderdate [] равно
20 ноября 2008 г., 16:39Hellen
Таким образом, все строки объединены. Может кто-нибудь показать мне, как я могу достичь того, что мне нужно?
РЕДАКТИРОВАТЬ: решение найдено, осталась только одна странная вещь:
Я решил это сейчас, используя этот фрагмент кода:
$fo = fopen("files/users.csv", "rb+");
while(!feof($fo)) {
$contents[] = fgetcsv($fo,0,';');
}
fclose($fo);
По какой-то причине, хотя мой CSV-файл содержит только 2 строки, он возвращает 2 массива и 1 логическое значение. Первые 2 - это мои массивы данных, а логическое значение равно 0.