2016-10-03 1 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("/([a-z0-9]+)/i", '"$1"', $row->product_id) 

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

С "preg_replace" я несколько раз больше котировок тогда необходимо ...

Мне нужны цитаты на Как экспортировать элементы, как я могу это сделать?

+0

Почему котировки по всем пунктам требование? CSV не требует его как такового, поэтому PHP не добавляет кавычки к элементам, которые ему не нужны. – deceze

+0

@deceze это требование клиента :( – Caner

ответ

4

Преобразовать все данные в строке по strval функции, а затем попытаться использовать fwrite вместо fputcsv:

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

Смежные вопросы