у нас есть скрипт PHP, который экспортирует заказы в файлы .csv. Система, которую мы экспортируем, также требует, чтобы каждое поле было заключено в кавычки.
Вот код, где мы устанавливаем каждое поле.
$order_data = array(
'type' => "H",
'order_type' => 'HOME',
'order_date' => $order->order_date,
'account_code' => "REAL",
'document_reference' =>'',
'reference1'=>'',
'reference2'=>'',
'delivery_addess_code'=> '',
'billing_first_name' => $order->billing_first_name ." ".$order->billing_last_name,
'billing_address_1' => $order->billing_address_1 ." ".$order->billing_address_2,
'billing_postcode' => $order->billing_postcode,
'delivery_tel_no'=> $order->billing_phone,
'delivery_contact'=> $order->billing_first_name,
Это выводы;
H, HOME, «2015-05-13 13:19:46», REAL ,,,,, «Ben Bull», «Address 1 Address2»,
Некоторые из них окружены «», а некоторые нет, как мы можем заставить их всех быть?
Для вывода CSV необходимо заключить все значения в двойные кавычки. Кроме того, если значения имеют двойные кавычки, вам нужно избегать этих двойных кавычек, используя две последовательные двойные кавычки. Вот как работает CSV.
Проверьте эту функцию PHP ниже.
function makeCSV($value) {
//Encloses each token (Before and after)
$CSV_TOKEN_ENCLOSER = '"';
//Used to escape the enclosing character if inside the token
$CSV_TOKEN_ENCLOSER_ESCAPER = '""';
//Escape the encloser inside the value
$csv_value = str_replace($CSV_TOKEN_ENCLOSER, $CSV_TOKEN_ENCLOSER_ESCAPER, $value);
//Enclose the value
$csv_value .= $CSV_TOKEN_ENCLOSER . $csv_value . $CSV_TOKEN_ENCLOSER;
//Return
return $csv_value;
}
Это делает работу, как я объяснил в первом абзаце. Вы можете использовать его как таковой в вашем случае:
$order_data = array(
'type' => makeCSV("H"),
'order_type' => makeCSV('HOME'),
'order_date' => makeCSV($order->order_date),
...
);
Однако, похоже, у вас есть код, который автоматически заключает в себе значения из ваших объектов заказа в кавычках. Я предлагаю вам избежать этого кода, замените его использованием функции makeCSV, представленной выше, а затем, наконец, просто используйте стандартный вызов PHP implode, чтобы получить CSV следующим образом:
$comma_separated_csv = implode(",", $order_data);
Надеюсь это поможет.
Приветствия.
Попробуйте заставить все типы в строку, например:
'order_type' => (string) 'HOME'