Volatil3
Volatil3

Reputation: 15016

php reading csv data into a single line

It's strange PHP Reading my Excel generated CSV file into a single line. Code is:

if ($file) {
                while (($line = fgets($file)) !== false) {
                    print '<div>'.$line.'</div>'."<br/>";
                }

            } else {
                // error opening the file.
            }

            fclose($file);

CSV

Name, City
Jon,Paris
Doe,Madrid

Upvotes: 0

Views: 94

Answers (2)

aayush93
aayush93

Reputation: 99

Add this code before reading the file.

ini_set("auto_detect_line_endings", true);

When turned on, PHP will examine the data read by fgets() and file() to see if it is using Unix, MS-Dos or Macintosh line-ending conventions.

This enables PHP to interoperate with Macintosh systems, but defaults to Off, as there is a very small performance penalty when detecting the EOL conventions for the first line, and also because people using carriage-returns as item separators under Unix systems would experience non-backwards-compatible behaviour.

Upvotes: 2

jbafford
jbafford

Reputation: 5668

Most likely, PHP is not correctly detecting the line endings in your file. The fgets documentation points this out.

You will probably want to write code like this:

$oldLineEndings = ini_set('auto_detect_line_endings', true);

//your while loop here

ini_set('auto_detect_line_endings', $oldLineEndings);

If you need to actually parse the csv, you may also want to look at fgetcsv.

Upvotes: 1

Related Questions