2016-10-03 4 views
2

Mit diesem Code erstelle ich meine CSV-Exportdatei:fputcsv() hinzufügen Anführungszeichen zu jedem Eintrag?

foreach ($data_for_export as $row) { 
    $data = []; 
    array_push($data, $row->product_id); 
    array_push($data, $row->product_name); 
    array_push($data, $row->product_code); 
    array_push($data, $row->text); 

    fputcsv($file, $data); 
} 

fclose($file); 

Beispiel Ausgabe lautet:

2131,"Toys set 35", TSSET35, "Lorem ipsum dolor sit amet" 

Ich versuchte es mit:

preg_replace("/([a-z0-9]+)/i", '"$1"', $row->product_id) 

    '"'.$row->product_id.'"' 

Mit "preg_replace" erhalte ich einige Male mehr Zitate dann benötigt ...

Ich brauche dort Zitate auf a lle Exportartikel, wie kann ich das machen?

+0

Warum sind Zitate auf alle Artikel eine Anforderung? CSV benötigt es nicht als solches, weshalb PHP keine Artikel hinzufügt, die es nicht benötigen. – deceze

+0

@deceze es ist Kundenanforderung :( – Caner

Antwort

4

Wandeln Sie alle Daten auf String von strval Funktion, versuchen dann fwrite statt fputcsv zu verwenden:

function push(&$data, $item) { 
    $quote = chr(34); // quote " character from ASCII table 
    $data[] = $quote . addslashes(strval($item)) . $quote; 
} 

foreach ($data_for_export as $row) { 
    $data = []; 

    push($data, $row->product_id); 
    push($data, $row->product_name); 
    push($data, $row->product_code); 
    push($data, $row->text); 

    // separate array items by ',' and add the End-Of-Line character 
    fwrite($file, implode(',', $data) . PHP_EOL); 
} 

fclose($file); 
+1

Sie müssen möglicherweise auch alle vorhandenen Anführungszeichen in der '$ item'Variable zu entkommen. –

+0

Ich habe das vergessen, danke für Ihre Aufmerksamkeit. Code bearbeitet. –

+1

Hier ist die beste Lösung Lösung: https: //stackoverflow.com/questions/15133892/add-quotes-to-csv-export Sie können fputcsv verwenden, aber Sie müssen das Gehäuse auf leer konfigurieren.Wenn Sie manuell Zitate hinzufügen, wo Sie möchten. – lamasgergo

Verwandte Themen