Как написать массив как содержимое файла CSV, используя PHP?

0

Я импортирую 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 в файл с кавычками? Ожидание ответа!

Теги:
csv
fopen
fputcsv

1 ответ

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.

  • 0
    с помощью 'fgetcsv' читаются значения с кавычками, поэтому я использую 'fgets'. В вашем коде я заменяю цикл while на цикл while, о котором упоминается в моем вопросе. Файл получает запись, но каждый раз читается только первая строка, остальное содержимое не читается при использовании 'fgetcsv'. @ Thomas L

Ещё вопросы

Сообщество Overcoder
Наверх
Меню