我只想在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时也是如此。有什么想法吗?
谢谢。
发布于 2010-02-28 21:37:24
请注意,这两个函数都适用于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);
?>https://stackoverflow.com/questions/2351179
复制相似问题