如何使用php将数组写为csv文件内容?

时间:2015-02-17 07:05:40

标签: php csv fopen fputcsv

我正在将CSV文件导入我的网站,其中包含希伯来语。在记事本中打开CSV文件时,希伯来语语言内容不会被引号括起来。不在引号中的内容不会在我的网站中读取。 在上传期间,这个csv文件被移动到另一个文件中。用双引号括起希伯来语内容我尝试了下面的代码,但文件没有升级。

$fileHandler = fopen('IMPORT_193', 'rw');
        while (($buffer = fgets($fileHandler))) 
        {
        $v=explode(',',$buffer);

        for($i=0;$i<count($v);$i++)
        {

            $val=trim($v[$i],'"');
            $v1[]= '"'.$val.'"';

        }

        fputcsv($fileHandler, $v1);
        }

我想用引号为CSV的新值更新文件中的当前内容。有没有办法将CSV内容括在带引号的文件中?等待你的回复!

1 个答案:

答案 0 :(得分:0)

您不能(至少在此示例中)同时读取和写入同一文件。 试试这个:

$fileRead = fopen('IMPORT_193', 'r');
$tempFile = tempnam(sys_get_temp_dir(), 'CSVIMPORT');
$fileWrite = fopen($tempFile, 'w');
while(!feof($fileRead)) {
  $data = fgetcsv($fileRead);
  foreach($data as $key=>$value) {
    if(!is_numeric($value)) {
      $data[$key] = '"'.$value.'"';
    }
  }
  fputcsv($fileWrite, $data);
}
fclose($fileRead);
fclose($fileWrite);
rename($tempFile, 'IMPORT_193');

这应该可以解决问题。我没有测试过这个。并且您需要具有覆盖IMPORT_193文件的权限。