4

fputcsvを使用して作成されたような文字列があります

Date,Name,Hours 2013-01-02,"Test User",7:59 2013-01-03,"Test User",7:53 2013-01-04,"Test User",8:12 2013-01-07,"Test User",7:56 2013-01-08,"Test User",8:25 2013-01-09,"Test User",7:56 2013-01-10,"Test User",8:10 2013-01-11,"Test User",7:53 2013-01-14,"Test User",7:54 2013-01-15,"Test User",0:34 2013-04-01,"Test User",5:51 2013-04-02,"Test User",8:50 2013-04-03,"Test User",7:25 2013-04-04,"Test User",8:3 2013-04-05,"Test User","10:42:52[Not punch out]" ,Total,103:1

適切なヘッダー (header('Content-type: application/csv'); header('Content-Disposition: attachment; filename="'.$filename.'"');) が設定されている場合、正しい csv ファイルが得られます。

PHP str_getcsvを使用してcsvファイルデータを配列に変換する

しかし、この文字列をもう一度配列形式に変換したいので、上記の文字列をstr_getcsvに渡そうとしましたが、このような配列を取得しました

Array
(
    [0] => Date
    [1] => Name
    [2] => Hours
2013-01-02
    [3] => "Allen Herrera"
    [4] => 7:59
2013-01-03
    [5] => "Allen Herrera"
    [6] => 7:53
2013-01-04
    [7] => "Allen Herrera"
    [8] => 8:12
2013-01-07
    [9] => "Allen Herrera"
    [10] => 7:56
2013-01-08
    [11] => "Allen Herrera"
    [12] => 8:25
2013-01-09
    [13] => "Allen Herrera"
    [14] => 7:56
2013-01-10
    [15] => "Allen Herrera"
    [16] => 8:10
2013-01-11
    [17] => "Allen Herrera"
    [18] => 7:53
2013-01-14......................

適切にフォーマットされた配列を取得して、配列でテーブルループを作成するために簡単に使用できるようにしてください。

4

5 に答える 5

5
 $file = file_get_contents("test.csv");
 $data = array_map("str_getcsv", preg_split('/\r*\n+|\r+/', $file));
 print_r($data);
于 2013-05-17T11:43:03.117 に答える
-1
 $path = 'uploads/my_csvfile.csv';
 $file_content = file_get_contents($path);
 $matches = array_map('str_getcsv', preg_split('/\r*\n+|\r+/',$file_content));
 print_r($matches);
于 2016-02-20T05:23:51.570 に答える