Problem cvs und explode

Hallo !

Ich habe ein Problem beim bearbeiten einer cvs Datei

Beispiel von einem Datensatz
Code:
118293;xyz;21;0;-100,0%;2

Folgender Code :

PHP:
...
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
   $row = explode(";",$data[0]);
}

Ich erhalte die folgende Ausgabe

Code:
Array (     [0] => 118293     [1] => xyz     [2] => 21     [3] => 0     [4] => -100 )

Anscheinend kommt PHP mit der prozentuallen Angabe nicht klar und schneidet alles ab. Wie könnte ich das lösen ?
 
Code:
118293;xyz;21;0;-100,0%;2
Folgender Code :

PHP:
...
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {

Der delimiter nicht ist das ','. Das musst du bedenken.

PHP:
 while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) {
Aber dann würde ich eher file() benutzen.

PHP:
 $x = file("/tmp/csv.csv");
 foreach($x as $y) {
  $row = explode(";",$y);
 [...]
Code:
 Array
(
    [0] => 118293
    [1] => xyz
    [2] => 21
    [3] => 0
    [4] => -100,0%
    [5] => 2

)
Micha
 
Zuletzt bearbeitet:
oder vorher ein Konstrukt wie dieses:

$variable = str_replace("%","___000___",$dateitext);

(Ich habe z. B. immer eine Funktion im Einsatz die eine Liste von Zeichen gegen Ersatzzeichen ersetzt und ungekehrt).

lG
 
... dann nimm das Zeichen, was stört.
Wenn ich es richtig überflogen habe, hängt die Auflösung entweder bei "%" oder "," ... je nachdem welchen Beitrag man jetzt nachgeht.

Kernaussage sollte auch nur sein: Strings kann man gut filtern, so dass man hinterher einfacher mit ihnen arbeiten kann und erst vor der Ausgabe wieder zurück konvertiert.

lG
 
... dann nimm das Zeichen, was stört.
Wenn ich es richtig überflogen habe, hängt die Auflösung entweder bei "%" oder "," ... je nachdem welchen Beitrag man jetzt nachgeht.

Es gibt gar kein Zeichen das stört. Weder das "%" noch das ",".

Kernaussage sollte auch nur sein: Strings kann man gut filtern, so dass man hinterher einfacher mit ihnen arbeiten kann und erst vor der Ausgabe wieder zurück konvertiert.
Ich schreibe nur noch sehr selten irgendwas in php und konnte mich nicht mehr erinnern wie fgetcsv arbeitet. Dann (nach meiner ersten Antwort) habe ich das nochmal nachgelesen. Solltest du auch mal machen.

PHP: fgetcsv - Manual

Micha
 
Zurück
Oben