| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |
|

09-08-2010, 15:41
|
|
BananaJo
Registrierter Benutzer
|
|
Registriert seit: Aug 2008
Beiträge: 249
|
|
muss ich dafür nich immer eine datei mit der csv auslesen?? ich hab einfach einen string der bereits in einer variable gespeichert ist..
|

09-08-2010, 16:02
|
|
h3ll
Registrierter Benutzer
|
|
Registriert seit: Mar 2008
Beiträge: 2.328
|
|
Nein. fgetcsv() erwartet nur einen Dateizeiger. Ob dieser Zeiger auf eine wirkliche Datei zeigt oder nicht, ist ihm egal.
|

09-08-2010, 16:31
|
|
BananaJo
Registrierter Benutzer
|
|
Registriert seit: Aug 2008
Beiträge: 249
|
|
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?
|

09-08-2010, 17:35
|
|
combie
PHP Expert
|
|
Registriert seit: May 2006
Beiträge: 2.925
|
|
Zitat:
|
kann mir nicht jemand einen schnellen gedankenanstoß oder ein kurzes beispiel nennen?
|
Klar kann ich das!
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"
Beispiel:
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>';
}
|

10-08-2010, 15:21
|
|
BananaJo
Registrierter Benutzer
|
|
Registriert seit: Aug 2008
Beiträge: 249
|
|
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:xampphtdocstest.php on line 73
Warning: fgetcsv() expects parameter 1 to be resource, string given in D:xampphtdocstest.php on line 74
Fatal error: Call to undefined function Exception() in D:xampphtdocstest.php on line 116
leider bekomme ich das nicht wirklick hin den code so umzuschreiben, da ich nicht objekorientiert programmiere  ...
Wäre cool wenn du den code eben noch für eine Variable hast
|

10-08-2010, 16:12
|
|
combie
PHP Expert
|
|
Registriert seit: May 2006
Beiträge: 2.925
|
|
Nur befürchte ich, dass das nix bringt, wenn url_fopen_wrapper deaktiviert ist.
Und nein, ich schreibe das nicht um.
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|