Нет... на всех платформах Windows DWORD составляет 32 бита. LONGLONG или LONG64 используются для типов на 64 бита.
Предупреждения относительно вышеупомянутых вложений действительны, но вы сказали, что они не применимы к вашему варианту использования.
Мне интересно, почему вы не можете просто использовать что-то вроде этого?
<?php
$fields = array(
"field 1","field 2","field3hasNoSpaces"
);
fputs(STDOUT, implode($fields, ',')."\n");
Это не работает?
fputcsv($fp, split(',', $line),',',' ');
Это то, что я использую для помещения стандартного 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.
Обратной стороной является 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));
?>
Разобрался. Передав код ascii для Null функции car ()
, похоже, он работает нормально.
fputcsv ($ f, $ array, $ delimiter, car (0))
Спасибо за ответы всем !!!
Ну car (0)
не сработало, поскольку значение NULL
, скорее всего, подавит большинство парсеров csv.
Я закончил использовать fputcsv ()
для создания исходного файла, затем прошел и удалил все кавычки. Элегантный? Может и нет, но он сделал свою работу :).