Mit folgender PHP Klasse/Funktion kann ein CSV String in einen Array geparsed werden. In Zeile 1 wird der Kopf erwartet, der dann als Schlüssel für die Daten fungiert.
abstract class csvHelper {
public static function csvToArray(string $csvString): array {
$lines = explode("\n", $csvString);
$arKeys = array_map('trim', str_getcsv(array_shift($lines)));
$arResult = [];
foreach ($lines as $line) {
if (trim($line) !== "") {
$arValues = array_map('trim', str_getcsv($line));
$arResult[] = array_combine($arKeys, $arValues);
}
}
return $arResult;
}
}
Oder besser mit der Bibliothek league/csv
abstract class csvHelper {
public static function csvToArray(string $csvString): array {
$reader = League\Csv\Reader::createFromString($csvString);
$reader->setHeaderOffset(0);
return [
iterator_to_array($reader->getRecords())
];
}
}