Запишите CSV в файл без корпусов в PHP

Нет... на всех платформах Windows DWORD составляет 32 бита. LONGLONG или LONG64 используются для типов на 64 бита.

48
задан Derek Reynolds 25 November 2009 в 23:31
поделиться

6 ответов

Предупреждения относительно вышеупомянутых вложений действительны, но вы сказали, что они не применимы к вашему варианту использования.

Мне интересно, почему вы не можете просто использовать что-то вроде этого?

<?php
$fields = array(
    "field 1","field 2","field3hasNoSpaces"
);
fputs(STDOUT, implode($fields, ',')."\n");
58
ответ дан 26 November 2019 в 18:53
поделиться

Это не работает?

fputcsv($fp, split(',', $line),',',' ');
2
ответ дан 26 November 2019 в 18:53
поделиться

Это то, что я использую для помещения стандартного CSV в массив ...

function csv_explode($delim=',', $str, $enclose='"', $preserve=false){
        $resArr = array();
        $n = 0;
        $expEncArr = explode($enclose, $str);
        foreach($expEncArr as $EncItem){
                if($n++%2){
                        array_push($resArr, array_pop($resArr) . ($preserve?$enclose:'') . $EncItem.($preserve?$enclose:''));
                }else{
                        $expDelArr = explode($delim, $EncItem);
                        array_push($resArr, array_pop($resArr) . array_shift($expDelArr));
                        $resArr = array_merge($resArr, $expDelArr);
                }
        }
        return $resArr;
} 

Затем вы можете выводить все, что хотите, в цикле foreach.

0
ответ дан 26 November 2019 в 18:53
поделиться

Обратной стороной является CSV-файл без вложений: ошибочная запятая при вводе пользователя приведет к изменению строки. Поэтому перед написанием строки CSV вам нужно удалить запятые.

Сложная часть работы с CSV - это анализ вложений, что делает функции PHP и PEAR CSV ценными. По сути, вы ищете файл с разделителями-запятыми для столбцов и разделенными символами новой строки для строк. Вот простая отправная точка:

<?php
$col_separator= ',';
$row_separator= "\n";

$a= array(
 array('my', 'values', 'are', 'awes,breakit,ome'),
 array('these', 'values', 'also', "rock\nAND\nROLL")
);

function encodeRow(array $a) {
 global $col_separator;
 global $row_separator;
 // Can't have the separators in the column data!
 $a2= array();
 foreach ($a as $v) {
  $a2[]= str_replace(array($col_separator, $row_separator), '', $v);
 }
 return implode($col_separator, $a2);
}

$output= array();
foreach ($a as $row) {
 $output[]= encodeRow($row);
}

echo(implode($row_separator, $output));

?>
0
ответ дан 26 November 2019 в 18:53
поделиться

Разобрался. Передав код ascii для Null функции car () , похоже, он работает нормально.

fputcsv ($ f, $ array, $ delimiter, car (0))

Спасибо за ответы всем !!!

-3
ответ дан 26 November 2019 в 18:53
поделиться

Ну car (0) не сработало, поскольку значение NULL , скорее всего, подавит большинство парсеров csv.

Я закончил использовать fputcsv () для создания исходного файла, затем прошел и удалил все кавычки. Элегантный? Может и нет, но он сделал свою работу :).

2
ответ дан 26 November 2019 в 18:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: