У меня есть. .csv
файл, и когда я открываю его через блокнот, он выглядит так:
ID501501503502
И когда я печатаю его в браузере через php, это выглядит
ID 501 501 503 502
Мой код:
$handle = fopen("MonC1.csv", "r"); $data = fgetcsv($handle, 0); $fh = fopen('php://output', 'w'); if (! empty($data)) { foreach ($data as $item) { echo $item."<br>"; //fputcsv($fh, array($item)); } }
Таким образом, в основном тег br
внутри цикла for не работает. Это моя первая проблема.
Вторая проблема – даже если я использую fputcsv(now it is turned off)
он не создает фактический csv
файл.
Теперь мой вопрос заключается в том, как у него нет места в блокноте, и когда я печатаю в браузере, он получает пространство?
У меня есть только одна колонка и ничего больше.
Любая помощь высоко ценится. Заранее спасибо.
Как упоминалось в моем комментарии, похоже, что ваш исходный файл сохраняется с окончанием строки UNIX, а затем вы используете fgetcsv
в Windows, поэтому весь файл читается как одна строка. Вероятно, в конце всего вывода есть один.
Поэтому перед обработкой файла вам необходимо предварительно обработать его для преобразования окончаний строки.
В Linux утилита unix2dos
делает то, что вы хотите. Или вы можете просто заменить \n
на \r\n
в вашем файле.
Другая проблема заключается в том, что fgetcsv
не превращает весь файл в массив. Вместо этого он считывает одну строку из дескриптора файла и преобразует ее в массив. Вам нужно будет прочитать строки внутри цикла:
while (($data = fgetcsv($handle)) !== FALSE) { // $data contains one line of the CSV, in array form // now you can fputcsv the single line }