Вы можете использовать fgetcsv () (или str_getcsv () , если у вас нет дескриптора файла).
$fp = fopen('test.txt', 'rb') or die('!fopen');
$result = array();
while(!feof($fp)) {
$result[] = fgetcsv($fp, 0, '#');
}
var_dump($result);
edit: При необходимости / желании вы можете легко сделать его ассоциативным массивом.
$fp = fopen('test.txt', 'rb') or die('!fopen');
$keys = fgetcsv($fp, 0, '#');
$result = array();
while(!feof($fp)) {
if ( false!=($row=fgetcsv($fp, 0, '#')) ) {
$result[] = array_combine($keys, $row);
}
}
var_dump($result);
(вы можете захотеть немного «растянуть» этот код для большей обработки ошибок)
Или добавьте / замените ключи позднее. Например. (используя замыкание, только php 5.3+)
$fp = fopen('test.txt', 'rb') or die('!fopen');
$result = array();
while(!feof($fp)) {
$result[] = fgetcsv($fp, 0, '#');
}
// if there is a line break after the last record
// you might want to remove the empty entry
array_filter($result);
// get the field names and combine them with each record
$keys = array_shift($result);
$result = array_map( function($e) use($keys) { return array_combine($keys, $e); } , $result);
var_dump($result);