2015-12-05 7 views
0

我通過向我的服務器發送Ajax請求(ajax請求是需求)上傳base64編碼的CSV文件。我試圖解析它,所以我有一個多維數組。解析來自PHP上的base64的csv文件

CSV文件看起來是這樣的:

1, 1, 1, 1, 'Yuliana Arredondo', 'Mi razón social', '[email protected]', 'aoeaoeaoe1', 'avatar_56627eb7ea174.png', 'CUIH900419RC4', '2015-12-09', '2015-12-23', '2015-12-01', 'SYSTEM-CSV' 
1, 1, 1, 1, 'Eduardo de la Cruz', 'Mi razón social', '[email protected]', 'aoeaoeaoe1', 'avatar_56627eb7ea174.png', 'CUIH900419RC6', '2015-12-09', '2015-12-23', '2015-12-01', 'SYSTEM-CSV' 

而且,在PHP我想(每個記錄由一個,據我可以告訴輸入分開):

if($request->input('file')){ 
    $b64 = $request->input('file'); 
    $pos = strpos($b64, ';'); 
    if($pos !== false){ 
     $b64 = base64_decode(preg_replace('#^data:text/\w+;base64,#i', '', $b64)); 
    } 
} 
$array = str_getcsv($b64); 

但是,在$數組中,而不是獲得2個記錄(每個有14個字段)的數組,我得到了28個記錄的普通數組。

我做錯了什麼?還是應該像這樣工作?如果是這樣,是否有任何解決方法?

在旁註中,14個字段是一致的,所以將其「硬編碼」爲常量是有效的。

在此先感謝。

回答

1

如何將CSV字符串轉換爲行數組,然後將str_getcsv映射到每行?

像這樣的事情是可能的:

$lines = explode("\n", $b64); 
$array = array_map('str_getcsv', $lines); 

相反的:

$array = str_getcsv($b64); 

希望它幫助;)