在插入数据库之前从csv中删除引号

时间:2013-04-15 22:01:49

标签: php string sql-server-2008 parsing

我有一个类似于下面的

的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)周围的引号。这样做最好的方法是什么?

2 个答案:

答案 0 :(得分:2)

PHP有csv specific functions。您应该使用它们来处理您所面临的问题,即,如果列值包含引号,该怎么办。也:

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

如果其中一列的值包含逗号,该怎么办?

csv函数将确保正确解析数据。

答案 1 :(得分:1)

有时阵列太笨了而无法完成工作。 Some objects更聪明:

$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"
}

See it in action.