muss ich dafür nich immer eine datei mit der csv auslesen?? ich hab einfach einen string der bereits in einer variable gespeichert ist..
Brauche Hilfe zum verarbeiten von CSV ausgabe
Einklappen
X
-
also ich bekomm das mit diesem fgetcsv einfach nicht mehr hin.. ich weiss nicht wie ich anfangen soll und erst die csv "namen" auszulese und diese dann mit den etsprechenden werten im zweidimensionalen array (siehe beispiel oben und beiträge zuvor) zu füllen.
kann mir nicht jemand einen schnellen gedankenanstoß oder ein kurzes beispiel nennen?
Kommentar
-
kann mir nicht jemand einen schnellen gedankenanstoß oder ein kurzes beispiel nennen?
Aber eigentlich solltest du ein solches Problem doch selber in den Griff bekommen...
Nagut, auf das Risiko hin, dass du davon keinen Piep verstehst:
Testdaten:
Code:decimal;integer;string 4.0;5;retrz 4.5;14;"trtert ret ert" 5.0;24;"fdfdf""sdfdsf" 5.5;33;fdfdf'sdfdsf 6.0;41;fdfdfsdfdsf 6.5;49;"fdfdfs;;;dfdsf" 7.0;57;fdfdf""sdfdsf 7.5;64;"fdfdf"";""sdfdsf"
PHP-Code:<?php
error_reporting(-1);
ini_set('display_errors', TRUE);
setlocale(LC_ALL,'de_DE@euro', 'de_DE', 'de', 'ge');
date_default_timezone_set('Europe/Berlin');
class CsvIterator implements Iterator
{
private $fh = false;
private $data = array();
private $pos = 0;
private $length = 16384;
private $delimiter = ',';
private $enclosure = '"';
public function __construct($filename,$length=16384, $delimiter=',',$enclosure='"')
{
$this->fh = fopen($filename,'r');
if(!$this->fh) throw Exception("File $filename open failed!");
$this->length = $length;
$this->delimiter = $delimiter;
$this->enclosure = $enclosure;
}
public function rewind()
{
$this->pos = 0;
rewind($this->fh);
$this->data = fgetcsv($this->fh,$this->length,$this->delimiter,$this->enclosure);
}
public function current()
{
return $this->data;
}
public function key()
{
return $this->pos;
}
public function next()
{
$this->data = fgetcsv($this->fh,$this->length,$this->delimiter,$this->enclosure);
++$this->pos;
}
public function valid()
{
return (bool) $this->data;
}
public function __destruct()
{
fclose($this->fh);
}
}
class CsvNamesFirstIterator extends CsvIterator
{
private $names = array();
public function current()
{
return array_combine($this->names,parent::current());
}
public function rewind()
{
parent::rewind();
if(!$this->valid()) throw Exception("File is empty (no names found)!");
$this->names = parent::current();
$this->next();
}
public function key()
{
return parent::key() - 1 ;
}
}
// testcode
$ite = new CsvNamesFirstIterator('daten.csv',1000,';');
foreach ($ite as $key=>$value)
{
print_r($value);
echo '<br>';
}
Kommentar
-
danke für deine Bemühungen!!!
aber ich habe den csv String in der Variable $csv stehen und dein Code liest eine Datei aus.. daher bekomme ich Fehlermeldungen wie
PHP-Code:Warning: rewind() expects parameter 1 to be resource, string given in D:\xampp\htdocs\test.php on line 73
Warning: fgetcsv() expects parameter 1 to be resource, string given in D:\xampp\htdocs\test.php on line 74
Fatal error: Call to undefined function Exception() in D:\xampp\htdocs\test.php on line 116
Wäre cool wenn du den code eben noch für eine Variable hast
Kommentar
-
Hallo,
den Code dafür gibt's sogar fertig im Handbuch: PHP: Example class registered as stream wrapper - Manual
Gruß,
Amica[COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
[/COLOR]
Kommentar
-
Nur befürchte ich, dass das nix bringt, wenn url_fopen_wrapper deaktiviert ist.
Und nein, ich schreibe das nicht um.
Kommentar
Kommentar