Если сначала разбить текстовое поле новой строкой, то обрабатывать каждую строку по одной за раз.
Игнорировать все, что начинается с #
(бит $line[0] == '#'
).
Используйте str_getcsv()
, чтобы разбить строку на отдельные поля (с учетом полей в кавычках и т. Д.). Затем, если заголовка еще не было, сохраните это значение разделения в качестве заголовка.Если был заголовок, добавьте эти новые данные как часть выходных данных, комбинируя их с array_combine()
...
$input = '# some instruction
# some instruction
Day,Open,Close
Monday,09:00,17:00
Tuesday,09:00,18:00';
$lines = explode(PHP_EOL, $input);
$header = null;
$output = [];
foreach ( $lines as $line ) {
if ( $line[0] == '#' ) {
continue;
}
$data = str_getcsv($line);
if ( $header == null ) {
$header = $data;
}
else {
$output[] = array_combine($header, $data);
}
}
print_r($output);