アップロードされた CSV ファイルを PHP の配列に処理しようとしています。私はそれで問題なく動作していますが、ユーザーからの一部のファイルには区切り記号付きの空白行がたくさんあります。これは通常、既存のファイルで Excel を使用する場合に発生します。古いセルを強調表示し、それらをクリアします。
サンプル CSV ファイル
lineNo,date,vendor,amount 1,5/2/2012,V000236,3727.21 2012 年 2 月 2 日、V003432、4826.19 、、、 、、、
次の配列になります
配列 ( [0] => 配列 ( [0] => 行番号 [1] => 日付 [2] => ベンダー [3] => 金額 ) [1] => 配列 ( [0] => 1 [1] => 2012 年 5 月 2 日 [2] => V000236 [3] => 3727.21 ) [2] => 配列 ( [0] => 2 [1] => 2012 年 5 月 2 日 [2] => V003432 [3] => 4826.19 ) [3] => 配列 ( [0] => [1] => [2] => [3] => ) [4] => 配列 ( [0] => [1] => [2] => [3] => ) )
空白の行を削除するだけではなく、配列インデックス 2 の後で停止したいのです。関数を簡単に使用してください。私は新しいです :P
function csvToArray($csvFile, $specialChars = FALSE) {
$arrayCSV = array();
if (($csvHandle = fopen($csvFile, "r")) !== FALSE) { // Open the CSV
$csvKey = 0; // Set the parent array key to 0
while (($csvData = fgetcsv($csvHandle)) !== FALSE) {
$c = count($csvData); // Count the total keys in each row
//need something to stop on blank delimiter rows ,,,
for ($x = 0; $x < $c; $x++) { //Populate the array
if ($specialChars === TRUE) {
$arrayCSV[$csvKey][$x] = htmlspecialchars($csvData[$x]);
} else {
$arrayCSV[$csvKey][$x] = $csvData[$x];
}
}
$csvKey++;
}
fclose($csvHandle);
}
return $arrayCSV;
}
最終的にはこれを返してほしい
配列 ( [0] => 配列 ( [0] => 行番号 [1] => 日付 [2] => ベンダー [3] => 金額 ) [1] => 配列 ( [0] => 1 [1] => 2012 年 5 月 2 日 [2] => V000236 [3] => 3727.21 ) [2] => 配列 ( [0] => 2 [1] => 2012 年 5 月 2 日 [2] => V003432 [3] => 4826.19 ) )