在我的應用我有一個文本,其中我的用戶是指在格式輸入數據:處理來自textarea的多行數據;更有效的方式?
Forename, Surname, YYYY-MM-DD, Company
Forename, Surname, YYYY-MM-DD, Company
每行。我的意圖是,然後循環通過每一行,在逗號處爆炸並修剪任何空白區域。
我然後需要將分解數組傳遞到關聯數組。我現在正在手動執行此操作,假設用戶以正確的順序和格式輸入數據;它確實有效,但依靠用戶不會搞砸。
你會建議什麼作爲這樣做的更好的辦法?我想我正在檢查每個索引以查看它是否爲空或者看起來非常笨重,以及容易出錯。
任何建議或需要考慮的事情?
/************************************
* sample data from textarea:
* Name, Surname, 1980-02-22, Company
* Foo, Bar, 1970-05-12, Baz
************************************/
$data = preg_split('/\r\n|\n/', $_POST['data'],
-1, PREG_SPLIT_NO_EMPTY);
$item = array();
// loop through the data
foreach($data as $row) :
// trim and explode each line in to an array
$item[] = array_map('trim', explode(',', $row));
endforeach;
$k=0;
foreach($item as $user) :
$processed_data[$k]['first_name'] = !empty($user[0]) ? $user[0] : NULL;
$processed_data[$k]['last_name'] = !empty($user[1]) ? $user[1] : NULL;
if(!empty($user[2])) :
$dob = strtotime($user[2]);
if($dob) {
$processed_data[$k]['dob'] = $user[2];
} else {
$processed_data[$k]['dob'] = NULL;
}
else:
$processed_data[$k]['dob'] = NULL;
endif;
$processed_data[$k]['company'] = !empty($user[3]) ? $user[3] : NULL;
$k++;
endforeach;
// print_r($processed_data);
應該發生什麼?忽略該行?中止?修理它? –