Как объединить две строки, используя fgetcsv и fputcsv?
Я создаю скрипт, который будет читать CSV-файл и отображать его в текстовой области с помощью fgetcsv.
$handle = @fopen($filePath, "r"); if ($handle) { while (($buffer = fgetcsv($handle, 1000,",")) !== false) { foreach($buffer as $buff){ echo $buff."\n"; } } }
Формат CSV является
"line1-Content1", "line1-Content2"
"line2-Content1", "line2-Content2"Используя fgetcsv, содержимое будет отображаться внутри текстовой области без двойных кавычек и запятых. Можно ли отформатировать его так, чтобы оно также отображало двойные кавычки и запятую?
Затем при сохранении с помощью fputcsv
$file_to_load = $_GET['filepath']; $filePath = $dir.$file_to_load; $trans = trim($_POST['txtarea']); $keyarr = split("\n",$trans); $fp = fopen($filePath, 'w'); foreach (array ($keyarr) as $fields) { fputcsv($fp, $fields); } fclose($fp);
Глядя на файл CSV, он сохранил CSV, но отображает его так
"line1-Content1
"" line1-Content2
"" line2-Content1
", "line2-Content2"Он разделяет "line1-content1" и "line1-content2" на две строки и ставит запятую после конца каждой строки.
- Теперь я хочу сохранить форматирование # 2. Как я буду кодировать это?
Можете ли вы направить меня в правильном направлении? Спасибо!
1 ответ
Похоже, вы хотите отобразить фактический необработанный текст CSV, а не проанализированные данные в CSV. Вместо того, чтобы использовать fgetcsv()
Просто используйте fgets()
и вы получите текстовую строку без разбора, сохраняя кавычки и запятые.
Что касается fputcsv, он запишет то, что вы передаете в него, поэтому убедитесь, что все, что возвращается из формы, очищено (например, лишние разрывы строк удалены).