我正在尝试使用这个很棒的Jist将CSV转换为JSON: https://gist.github.com/robflaherty/1185299
我已经给了一个非常CSV从一个非常陈旧的过程编程语言。CSV文件只能按如下方式生成。
我需要去掉第二行,这是一个空白换行符,理想情况下,我想去掉每行的所有额外空格:
Series, SKU, Stock
01000 , 01000-1116 , 98
01000 , 01000-1132 , 0
01000 , 01000-116 , 1000
01000 , 01000-1164 , 3880
01000 , 01000-12 , 2040
01000 , 01000-132 , 2240
01000 , 01000-1332 , 545
01000 , 01000-1364 , 50
我已经尝试了我的小武器库中的每一种组合来让它工作。Preg_replace, trim等
有谁有什么建议吗?下面是Jist中处理这些行的部分:function csvToArray($file, $delimiter) {
if (($handle = fopen($file, 'r')) !== FALSE) {
$i = 0;
while (($lineArray = fgetcsv($handle, 4000, $delimiter, '"')) !== FALSE) {
for ($j = 0; $j < count($lineArray); $j++) {
$arr[$i][$j] = $lineArray[$j];
}
$i++;
}
fclose($handle);
}
return $arr;
}
我希望有人能帮忙!提前感谢您看一下
您需要检查$lineArray
并使用trim()
功能,如下代码所示:
function csvToArray($file, $delimiter) {
if (($handle = fopen($file, 'r')) !== FALSE) {
$i = 0;
while (($lineArray = fgetcsv($handle, 4000, $delimiter, '"')) !== FALSE) {
if (count($lineArray) == 1 && is_null($lineArray[0])) {
continue;
}
for ($j = 0; $j < count($lineArray); $j++) {
$arr[$i][$j] = trim($lineArray[$j]);
}
$i++;
}
fclose($handle);
}
return $arr;
}
试试这个。它会跳过空行并裁剪值。
// Function to convert CSV into associative array
function csvToArray($file, $delimiter) {
if (($handle = fopen($file, 'r')) !== FALSE) {
$i = 0;
while (($lineArray = fgetcsv($handle, 4000, $delimiter, '"')) !== FALSE) {
if(count($lineArray)==1) continue; //skip empty line (will fail if file will have only one column)
for ($j = 0; $j < count($lineArray); $j++) {
$arr[$i][$j] = trim($lineArray[$j]); //trim value
}
$i++;
}
fclose($handle);
}
return $arr;
}
Try this code:
function csvToArray($file, $delimiter)
{
if (($handle = fopen($file, 'r')) !== FALSE) {
$i = 0;
while (($lineArray = fgetcsv($handle, 4000, $delimiter, '"')) !== FALSE) {
for ($j = 0; $j < count($lineArray); $j++) {
if ($lineArray[$j] !== '') {
$arr[$i][$j] = $lineArray[$j];
}
}
$i++;
}
fclose($handle);
}
return $arr;
}