我想解析,处理然后只覆盖csv文件中的1个特定列,我对前两个步骤很好,但是我遇到了第三个问题。这是我到目前为止所做的:
<?php
$fh = fopen("data.csv", "r");
$row = 1;
while (($data = fgetcsv($fh, 1024, ",")) !== FALSE) {
$get = $data[2];
$uc = ucwords(strtoupper($get));
echo $uc;
}
?>
显示正常,我只需要将处理过的内容写回原始列。我知道这是用fputcsv完成的,但我似乎无法让它工作:
$fp = fopen('data.csv', 'w');
fputcsv($fp, $uc, ",");
fclose($fp);
这只是擦除整个文件。使用fwrite时也一样。有什么想法吗?
感谢。
答案 0 :(得分:1)
请注意,这两个功能适用于lines
,而不适用于整个文件。
因此,当你写出来时,你将不得不重建它,如:
<?php
$list = array (
'aaa,bbb,ccc,dddd',
'123,456,789',
'"aaa","bbb"'
);
$fp = fopen('file.csv', 'w');
foreach ($list as $line) {
fputcsv($fp, split(',', $line));
}
fclose($fp);
?>
未测试
<?php
$fh = fopen("data.csv", "r");
$row = 1;
$list=array();
while (($data = fgetcsv($fh, 1024, ",")) !== FALSE) {
$data[2] = ucwords(strtoupper($data[2]));
$list[]=$data; // collect lines
}
fclose($fh);
$fp = fopen('file.csv', 'w');
foreach ($list as $line) {
fputcsv($fp, $line);
}
fclose($fp);
?>