Domanda

  1. Sto creando uno script che leggere un file CSV e visualizzare su una textarea utilizzando fgetcsv.

      $handle = @fopen($filePath, "r");
    
      if ($handle)
      {
         while (($buffer = fgetcsv($handle, 1000,",")) !== false) 
         {
              foreach($buffer as $buff){
                 echo $buff."\n";
              }
    
         }
      }      
    
  2. Il formato del CSV è

    "linea 1-content1", "linea 1-content2"
    "Line2-content1", "Linea 2-content2"

  3. Utilizzando fgetcsv, il contenuto viene visualizzato all'interno del textarea senza doppio preventivo e virgola. Posso formattare in modo che mostrerà anche le citazioni duoble e virgola?

  4. Poi su di risparmio utilizzando 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. Guardando sul file CSV, ha salvato il csv ma ??visualizza in questo modo

    "linea 1-content1
    "" Linea 1-content2
    "" Linea 2-content1
    ", "Linea 2-content2"

  6. Si separa la "linea 1-content1" e "linea 1-content2" in due linee e mettere una virgola dopo la fine di ogni riga.

  7. Ora voglio mantenere la formattazione del # 2. Come faccio a codificarlo?

Mi può guidare nella giusta direzione? Grazie!

È stato utile?

Soluzione

Sembra che si desidera visualizzare l'attuale testo grezzo CSV, non i dati analizzati all'interno del CSV. Invece di usare fgetcsv(), basta usare fgets() e si otterrà la riga di testo senza alcuna analisi, preservando le virgolette e le virgole.

Per quanto riguarda fputcsv, sta andando a scrivere ciò che si passa in esso, in modo da assicurarsi che tutto ciò che sta tornando dalla forma viene ripulito (interruzioni di riga in più per esempio spogliato fuori).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top