0

次のような CSV ファイルからの行があります。

"Item 1","Item 2","Item 3","Item 4","Item 5, Test 6" 数千行繰り返し 項目間にスペースはありません。

項目 5 とテスト 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 に答える