0

以下のようなcsvがあります

"0","Task 1","456461608"
"0","Task 2","483727014"
"1","Task 3","277047414"

私は次のphpコードを持っています($prepは単に配列内のデータをdbに書き込みます)

$csv_array = file($file_name);
foreach ($csv_array as $row_num => $row) {
    $row = trim ($row);
    $column = explode ( ',' , $row );
    $param1 = $column[2];
    $param2 = $column[1];
    $param3 = $column[0];

    // insert the row
    $result = execute ( $prep );
}

最初の列 ($param3) と最後の列 ($param1) を囲む引用符を削除する必要があります。これを行うための最良の方法は何ですか?

4

2 に答える 2

2

PHP にはcsv 固有の関数があります。列の値に引用符が含まれている場合など、直面している問題に対処するため、それらを使用する必要があります。また:

$column = explode ( ',' , $row );

いずれかの列の値にコンマが含まれている場合はどうなるでしょうか?

csv 関数は、データが適切に解析されることを保証します。

于 2013-04-15T22:13:14.347 に答える
1

場合によっては、配列があまりにも愚かすぎて仕事をやり遂げることができません。いくつかのオブジェクトはより賢いです:

$rows = new SplFileObject($path);
$rows->setFlags(SplFileObject::READ_CSV);

foreach($rows as $row)
{
    var_dump($row);
}

出力:

array(3) {
  [0]=> string(1) "0"
  [1]=> string(6) "Task 1"
  [2]=> string(9) "456461608"
}
array(3) {
  [0]=> string(1) "0"
  [1]=> string(6) "Task 2"
  [2]=> string(9) "483727014"
}
array(3) {
  [0]=> string(1) "1"
  [1]=> string(6) "Task 3"
  [2]=> string(9) "277047414"
}

実際に見てください。

于 2013-04-15T22:41:28.200 に答える