am Verzweifeln mit fputcsv

hk007

Grünschnabel
Hallo Forum,

mache gerade meine ersten Gehversuche mit php.
Aktuell versuche ich Daten in eine csv-Datei zu schreiben.
Allerdings hab ich Probleme beim Formatieren des aktuellen Datums.
Ich schreib mal den Code hierzu rein:
PHP:
$date = date("Y-m-d");
$time = date("H:i");
$handle = fopen("./test.csv", 'a');
fputcsv($handle, array($date."-".$time,$a0,$a1));
ergibt eine Zeile mit:
Code:
2017-04-19-23:04,123,456"

Wenn ich aber anstelle des Bindestriches zwischen Datum und Uhrzeit ein Leerzeichen haben will (und das brauche ich für die Anwendung die die csv wieder ausliest) dann bekomme ich die Zeitangabe in Anführungsstrichen. Und das kann ich gar nicht brauchen...
PHP:
$date = date("Y-m-d");
$time = date("H:i");
$handle = fopen("./test.csv", 'a');
fputcsv($handle, array($date." ".$time,$a0,$a1));
ergibt eine Zeile mit:
Code:
"2017-04-19 23:04",123,456"

Habt ihr da irgendeine Idee, wie ich Datum und Uhrzeit mit einem Leerzeichen getrennt und ohne die Anführungsstriche in die csv bekomme?
Gruß/hk007
 
PHP erkennt das Datum als String. Ergo macht er die " frum herum.
Bei fputcsv sind die " als Stringbegrenzer vordefiniert, können aber überschrieben werden
PHP:
fputcsv($handle, array($date." ".$time,$a0,$a1), ",", "");
 
Bekomme damit leider eine Fehlermeldung:
Code:
 Warning: fputcsv(): enclosure must be a character in C:\wamp\www\Test\data2csv.php on line 11

Wobei deine Idee nach der Beschreibung von fputcsv funktionieren sollte:
Code:
int fputcsv ( resource $handle , array $fields [, string $delimiter = "," [, string $enclosure = '"' [, string $escape_char = "\" ]]] )

Wenn ich ein beliebiges Zeichen als enclosure eingebe, dann tauscht er die Anführungszeichen auch dagegen aus. Nur sieht es so aus, als ob er unbedingt ein Zeichen haben will.
 
Zuletzt bearbeitet:
Hab im www ein Workaround gefunden:
PHP:
$act_time = date("Y-m-d H:i");
$csv_array = array($act_time,$a0,$a1);            // Umweg über das array notwendig, da fputcsv um strings mit Leerzeichen immer Anführungszeichen wickelt.
fputs ($handle, implode($csv_array,',')."\n");

Schade dass es nicht anders geht. Das mit dem geänderten enclosure hätte mir besser gefallen.
 
In dem Fall, das CSV selber zusammenschustern

Ungetestet
PHP:
$date = date("Y-m-d");
$time = date("H:i");
$handle = fopen("./test.csv", 'a');
//fputcsv($handle, array($date." ".$time,$a0,$a1));

$lines[] = impode(',', array($date." ".$time,$a0,$a1));
fwrite($handle, implode('\n', $lines));
 
Zurück