Как объединить две строки, используя FGETCSV и FPUTCSV?
Вопрос
Я создаю скрипт, который будет читать файл CSV и отображать его в Textarea с помощью 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, контент будет отображаться внутри TextAREA без двойного цитата и запятой. Могу ли я отформатировать его так, чтобы он также отображал дуэльские цитаты и запятую?
Затем при сохранении его с помощью 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. Как я это кодирую?
Вы можете направить меня в правильном направлении? Спасибо!
Решение
Похоже, вы хотите отобразить фактический необработанный текст CSV, а не анализированные данные в CSV. Вместо использования fgetcsv()
, просто используйте fgets()
И вы получите текстовую строку без какого -либо анализа, сохраняя цитаты и запятые.
Что касается fputcsv, то он будет написать, что вы передаете в него, поэтому убедитесь, что все, что возвращается из формы, очищено (например, дополнительные разрывы линии, разделенные).