【发布时间】:2013-08-19 14:15:05
【问题描述】:
我有一个从 DB 获取的数组。在这个项目中,我将我的数组转换为 csv 文件。但是每次我打开文件时,我都会得到双引号。我尝试使用 str_replace 和 preg_place 没有成功。如何删除引号
这是我的 csv 代码
$query = "SELECT t.transactiontime, t.restaurant_id, t.transactionid, t.cardid, emd.m_field_id_2, t.pricebefordiscount, t.menucard_cut
from transactions as t
left join exp_member_data AS emd ON (t.cardid-10000000 = emd.member_id) order by t.transactiontime desc limit 50";
$transactions_query = ee()->db->query($query);
$transactions_result = $transactions_query->result_array();
$transaction_array = array();
foreach ($transactions_result as $key)
{
$date = new DateTime($key['transactiontime']);
$newdate = $date->format('d.m.Y');
$transaction_array[] = array(
'transactiontime' => $newdate,
'restaurant_id' => $key['restaurant_id'],
'member' => $key['transactionid'] . " " . $key['m_field_id_2'],
'pricebefordiscount' => $key['pricebefordiscount']/100,
'menucard_cut' => $key['menucard_cut']
);
}
function outputCSV($data)
{
$outstream = fopen("php://output", 'w');
function __outputCSV(&$vals, $key, $filehandler)
{
fputcsv($filehandler, $vals, ';');
}
array_walk($data, '__outputCSV', $outstream);
fclose($outstream);
}
outputCSV($transaction_array);
我的输出
19.08.2013;47657;"12459 Abdullahi";60;
19.08.2013;47658;"12455 atima";30;
【问题讨论】:
-
CSV 文件中字段周围的引号是完全有效的,任何再次读取文件的内容都应该正确处理它们。
-
是否可以删除它们?
-
当然有可能,但你为什么要这样做是个问题。也许有更好的解决方案。
-
我假设它们是由 fputcsv 添加的;在这种情况下,您需要编写自己的函数来输出 CSV。
-
^ 来完成这个评论,看看这里如何写入你自己的文件。很简单:php.net/manual/en/function.fwrite.php