我有一个包含半克隆的字符串。我想创建一个csv文件。
$fp = fopen("abc.csv", "w");
$str = "FRUIT; STOCKS; TYPE\n lychee; B-type,A-type; instocks\n strawberry; A-type;N/A\n";
$rows = str_getcsv($str, PHP_EOL);
foreach($rows as $row) {
$data = str_getcsv($row);
fputcsv($fp, explode(';',$data), ";");
}
fputcsv()
似乎无法正常工作。
当我使用EXCEL打开csv时,数据应该位于半冒号(;
)所在的单独列中。
FRUIT TYPE STOCKS
Lychee B-type,A-type instocks
Strawberry A-type N/A
编辑:
我目前的输出和问题是
1.如果有多个单词被"
包裹(例如下面)
FRUIT;STOCKS;TYPE;"COST PER ITEM"
最终输出为(在excel中打开时)。
水果;股票;类型;"每件商品的成本" 荔枝" B型A型&#34 ;; instocks; $ 54, 草莓;一种; N / A; $ 31日;
每个;
都在一个单独的列中。我希望最终输出像这样
FRUIT TYPE STOCKS COST PER ITEM
Lychee B-type,A-type instocks $54
Strawberry A-type N/A $31
答案 0 :(得分:1)
不要尝试使用str_getcsv()将整个字符串解析为行,str_getcsv()旨在解析单个行,而不是文件/字符串的整个内容
$str = "FRUIT; STOCKS; TYPE\n lychee; B-type,A-type; instocks\n strawberry; A-type;N/A\n";
$rows = explode("\n", $str);
foreach($rows as $row) {
$data = str_getcsv($row, ';');
$data = array_map('trim', $data);
fputcsv($fp, $data, ';');
}
修改强>
好像你的MS Excel可能期望逗号(,
)作为分隔符而不是分号(;
)....所以你可能需要告诉MS Excel这个
明确地将sep=;
行写为文件的第一行
fwrite($fp, 'sep=;'.PHP_EOL);
在数据循环之前