[Funktion]CSV-Dateien Assoziativ Parsen
Verfasst: Do Jul 11, 2013 10:33 pm
Hallo,
PHP bietet, wie evtl. bekannt, mehrere Funktionen an um CSV-Daten/Dateien zu verarbeiten. Leider macht das keiner dieser Funktionen "Valide"(D.h es ist nicht möglich, Assoziativ zuzugreifen obwohl "Headlines" definiert wurden).
Ich habe aufgrund dessen mal ein bisschen Rumgetippselt, um eine solche Funktion für mich zu schaffen. (Aufgrund Dieses Postings hier)
Die Rückgabe der Funktion sieht so aus:
Ich hoffe das kann irgendjemanden irgendwann mal Helfen..^^
MfG
PHP bietet, wie evtl. bekannt, mehrere Funktionen an um CSV-Daten/Dateien zu verarbeiten. Leider macht das keiner dieser Funktionen "Valide"(D.h es ist nicht möglich, Assoziativ zuzugreifen obwohl "Headlines" definiert wurden).
Ich habe aufgrund dessen mal ein bisschen Rumgetippselt, um eine solche Funktion für mich zu schaffen. (Aufgrund Dieses Postings hier)
Die Rückgabe der Funktion sieht so aus:
...Und hier die Funktion dazu:(Achtung: parst nur Dateien durch Dateizugriffe)Array(1)
{
[0]=>array(3)
{
[Feld1]=>"Inhalt1";
[Feld2]=>"Inhalt2";
[Feld3]=>"Inhalt3";
}
}
Code: Alles auswählen
<?php
/**
* Returns a multi-dimensional array from a CSV file optionally using the
* first row as a header to create the underlying data as associative arrays.
* @param string $file Filepath including filename
* @param bool $head Use first row as header.
* @param string $delim Specify a delimiter other than a comma.
* @param int $len Line length to be passed to fgetcsv
* @return array or false on failure to retrieve any rows.
*/
function importcsv($file,$head=true,$delim=";",$len=1000) {
$return = false;
$handle = fopen($file, "r");
if ($head) {
$header = fgetcsv($handle, $len, $delim);
}
while (($data = fgetcsv($handle, $len, $delim)) !== FALSE) {
if ($head AND isset($header)) {
foreach ($header as $key=>$heading) {
$row[$heading]=(isset($data[$key])) ? $data[$key] : '';
}
$return[]=$row;
} else {
$return[]=$data;
}
}
fclose($handle);
return $return;
}
//@DEBUG=print_r(importcsv("./articles/db",true,";",20000));
?>
MfG