Come concatenare due stringhe utilizzando fgetcsv e fputcsv?
Domanda
-
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"; } } }
-
Il formato del CSV è
"linea 1-content1", "linea 1-content2"
"Line2-content1", "Linea 2-content2" -
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?
-
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);
-
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" -
Si separa la "linea 1-content1" e "linea 1-content2" in due linee e mettere una virgola dopo la fine di ogni riga.
- Ora voglio mantenere la formattazione del # 2. Come faccio a codificarlo?
Mi può guidare nella giusta direzione? Grazie!
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).