PHP Tabulator speichern

krizzelfix

Commander
Registriert
Sep. 2005
Beiträge
2.626
Hallo CB'ler,

ich programmiere für ein Projekt momentan eine Klasse mit der ich Daten aus einer MySQL Datenbank in einer CSV Datei speichern kann.
Mein Problem ist jetzt, dass wenn ich als Trennzeichen ein Tabulator angeben, wird in die Datei ein \t geschrieben.
Also
productID\tproductNAME\tproductINTRO\tproductDESC\tproductONLINE

Das Trennzeichen wird mit
PHP:
$this->Output.= $this->Export->Separator;
eingefügt.
Danach wird der Output String nicht mehr durch eine Funktion bearbeitet.

Wie bekomme ich das hin, dass auch wirklich ein Tabulator in der Datei gespeichert wird?

Grüße
 
Und wie wird $this->Export->Separator befüllt? Verwendest du da doppelte Anführungszeichen für das \t?
 
Das Trennzeichen wird mit SQL aus der Datenbank ausgelesen und der Variable zugewiesen.
PHP:
$this->Separator 			= $r->separator;
Und in der Datenbank steht nur ein \t.

Wenn ich mir den Inhalte der Variable mit einem var_dump ausgeben lasse, steht dort auch nur

Habe mal die Variable durch ein "\t" ausgetauscht. Dann wird der Tab richtig eingefügt.
 
Zuletzt bearbeitet:
Ja das ist ja klar dass das nicht umgewandelt wird wenn dus aus der Datenbank holst. Du müsstest da wohl mit eval() arbeiten um das in der richtigen Format zu bringen. So in der Art könnte es vielleicht gehen:
PHP:
$str = $r->separator;
eval ("\$tmp = \"$str\";");
$this->Separator = $tmp
Musst natürlich vorsichtig sein, dass da in der Datenbank auf keinen Fall gefährlicher Code steht (evtl. mit strlen() prüfen dass es max. 2 Zeichen oder so sind). Nicht dass dir dadurch jemand Code einschleusen kann der dann durch das eval ausgeführt wird!

Alternativ dazu kannst du auch ein str_replace machen:
PHP:
$this->Separator = str_replace('\t', "\t", $r->separator)
 
Zuletzt bearbeitet:
Vielen Dank VerniG.
Die Version mit dem Str_replace funktioniert.

Hatte heute eine ähnliche Lösung:
PHP:
$this->Separator = strftime("%t", time());
Finde die Lösung aber etwas unschön.
 
Zurück
Oben