0

我有一行来自这样的 CSV 文件:

"Item 1","Item 2","Item 3","Item 4","Item 5, Test 6" 重复数千行 项目之间没有空格。

Item 5 和 Test 6 之间的逗号应该在那里。我试图把这条线变成一个数组。

$i=1;
$temp_array = array();
$number = COUNT($array);
while($i <= $number) {
    $temp_array[] = explode(",", $array[$i]);
    $i++;
}

数组当前输出为“

[1] => Array
        (
            [0] => "Item 1"
            [1] => "Item 2"
            [2] => "Item 2"
            [3] => "Item 2"
            [4] => "Item 5
            [5] => Test 6"

        )

它应该输出如下:

[1] => Array
        (
            [0] => "Item 1"
            [1] => "Item 2"
            [2] => "Item 2"
            [3] => "Item 2"
            [4] => "Item 5, Test 6"

        )
4

3 回答 3

2

我会考虑使用 PHP 的函数“str_getcsv”——可能会为您节省一些麻烦。

此函数将 CSV 字符串解析为 PHP 数组。 http://php.net/manual/en/function.str-getcsv.php

例子:

$array = str_getcsv($csv_string, ",");
于 2013-05-22T23:30:56.910 回答
0

使用正则表达式拆分字符串

$temp_array = preg_split (",(?=[^ ])" , $array[$i]);
//                           ^ = "look ahead and make sure its not a space"

在javascript中测试

于 2013-05-22T23:40:22.073 回答
0

从字面上匹配引号。

$i=1;
$temp_array = array();
$number = COUNT($array);
while($i <= $number) {
    $temp_array[] = explode('","', $array[$i]);
    $i++;
}

如果您使用的是 PHP 5 或更高版本,您也可以这样做:

$string = ''; //your string.
$delimeter = ',';
$enclosure = '"';

$newArray = str_getcsv($input,$delimiter,$enclosure);
于 2013-05-22T23:32:12.047 回答