2017-11-23 1 views
2

Ich habe den folgenden Code, dass ich verwenden, um eine CSV-Datei mit CRLF als Linien Endungen lesenPHP fgetcsv(): Trennzeichen muss ein einzelnes Zeichen sein

if (($fp = fopen($path, "r")) !== FALSE) { 
      while (($record = fgetcsv($fp, 1000, "\r\n")) !== FALSE) { 
       if ($row == 0) { 
        $record[0] = $batchHeader; 
       } 
       $newCsvData[] = $record; 
       $row++; 
      } 
     } 

Wenn ich die CSV-Datei ich folgendes erhalten laden Fehler: fgetcsv(): Begrenzer muss hier ein einzelnes Zeichen

ist eine Probe oder meine csv sein:

enter image description here

Dank.

+0

' "\ r \ n"' ... Sie haben es zwei Zeichen ... – Hackerman

+0

Ausprobieren Verwenden [PHP_EOL] (https://stackoverflow.com/questions/128560/Wenn-ich-verwende-die-PHP-Konstante-PHP-EOL). (Ich habe nicht getestet, ob dies für fgetcsv funktioniert) – RToyo

+0

Wie erwähnt, können Sie nur 1 Zeichen verwenden und Sie versuchen, sowohl eine Wagenrücklauf und Zeilenvorschub verwenden. Wenden Sie einfach das '\ r' vor dem '\ n' an und benutzen Sie' \ n' als Trennzeichen. – cchoe1

Antwort

5

Ich schätze, es liest "\r\n" als Ihr Trennzeichen. Hast du versucht fgetcsv($fp, 1000, "|")?

Es sollte Zeilenenden automatisch erkennen.

PHP reference

2

Der betreffende Parameter ist der Begrenzer (field separator), nicht die Zeilentrennzeichen. In Ihrem Fall sollte | Ihr Trennzeichen sein. Die Funktion behandelt Zeilenenden selbst.

eine Lese für mehr Informationen Nehmen Sie an http://php.net/manual/en/function.fgetcsv.php

Verwandte Themen