Как объединить две строки, используя fgetcsv и fputcsv? - PullRequest
0 голосов
/ 14 января 2011
  1. Я создаю скрипт, который будет читать CSV-файл и отображать его в текстовой области с помощью fgetcsv.

      $handle = @fopen($filePath, "r");
    
      if ($handle)
      {
         while (($buffer = fgetcsv($handle, 1000,",")) !== false) 
         {
              foreach($buffer as $buff){
                 echo $buff."\n";
              }
    
         }
      }      
    
  2. Форматиз csv это

    "line1-content1", "line1-content2"
    "line2-content1", "line2-content2"

  3. Используя fgetcsv, содержимое будет отображаться внутри текстовой области без двойных кавычек и запятых. Можно ли отформатировать его так, чтобы оно также отображало двойные кавычки и запятую?

  4. Затем при сохранении с помощью 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);
    
  5. Глядя на файл CSV, он сохранил CSV, но отображает его так:

    "line1-content1
    ", "line1-content2
    ","line2-content1
    ", "line2-content2"

  6. Он разделяет "line1-content1" и "line1-content2" на две строки и ставит запятуюпосле конца каждой строки.

  7. Теперь я хочу сохранить форматирование # 2. Как я буду его кодировать?

Можете ли вы направить меня в правильном направлении?Спасибо!

1 Ответ

0 голосов
/ 14 января 2011

Похоже, вы хотите отобразить фактический необработанный текст CSV, а не проанализированные данные в CSV. Вместо использования fgetcsv(), просто используйте fgets(), и вы получите текстовую строку без разбора, сохраняя кавычки и запятые.

Что касается fputcsv, он будет записывать то, что вы передаете в него, поэтому убедитесь, что все, что возвращается из формы, очищено (например, лишние разрывы строк удалены).

...