Frage

Ich verwende diesen Code, um die Anzahl der Spalten aus einer CSV -Datei abzurufen:

$this->dummy_file_handler = fopen($this->config['file'],'r');
if ($dataset =fgetcsv($this->dummy_file_handler))
{
    $this->number_of_columns = count($dataset);
}

Es funktioniert gut wenn nicht Die Datei wird mit Excel für Mac 2011 exportiert, da der neue Zeilenzeichen damals ist Klassischer Mac (Cr) die fgetcsv erkennt nicht.

alt text

Wenn ich manuell Ändern Sie die Newline von Classic Mac (CR) in UNIX (LR), dann funktioniert es, aber ich muss automatisiert werden.

Wie kann ich machen fgetcsv Erkennen Sie den klassischen MAC (CR) neuen Liniencharakter?

War es hilfreich?

Lösung

Von dem Handbuch:

HINWEIS: Wenn PHP die Zeilenende nicht ordnungsgemäß erkennt, wenn Dateien auf einem Macintosh-Computer gelesen oder erstellt werden, kann die Laufzeit-Konfiguration Option auto_detect_line_endings dazu beitragen, das Problem zu beheben.

Andere Tipps

Wenn Sauls Antwort nicht funktioniert, würde ich ein einfaches Skript schreiben, das in der Datei auf einmal gelesen wird, und Str_replace alle r mit n, die Ergebnisse in eine neue Datei ablegen und diese neue Datei fungieren.

Ich finde es amüsant, dass diese Begriffe aus den Tagen der Verwendung von Schreibmaschinen stammen:
n = Zeilenvorschub (LF) - Fortschreitet die Papier eine Linie.
r = Wagenrückgabe (CR) - Gibt den Wagen auf die linke Seite des Schreibmaschinens zurück.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top