2016-10-03 6 views
2

私は私のCSVエクスポートファイルを作成:fputcsv()はすべてのエントリに引用符を追加しますか?このコードでは

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); 

出力例は次のとおりです。

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

私はそれを試してみました:私はいくつかの時間を得る "にpreg_replace" で

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

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

をより多くの引用符が必要でした...

私はそこに引用符が必要ですアイテムをエクスポートするのですが、どうすればいいですか?

+0

なぜ、すべての項目の引用符は必要条件ではありますか? CSVはそれを必要とせず、PHPはそれを必要としない項目に引用符を追加しません。 – deceze

+0

@decezeそれは顧客の要求です:( – Caner

答えて

4

代わりfputcsvfwriteを使用しよう、その後、strval関数で文字列にすべてのデータを変換します

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

'$ item'変数の既存の引用符をエスケープする必要があります –

+0

あなたの注意を忘れてしまいましたコードが編集されました –

+1

ここで最善の解決策があります: https: //stackoverflow.com/questions/15133892/add-quotes-to-csv-export fputcsvを使用できますが、エンクロージャを空白に設定する必要があります。手動で引用符を追加するよりも、必要な場所に追加できます。 – lamasgergo