Re: CSV Files
| From: | Ashley Sheridan | Date: | Thu, 23 Oct 2008 06:54:48 +0000 |
| Subject: | Re: CSV Files | ||
| References: | 1 2 3 4 5 6 7 8 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-282331@lists.php.net to get a copy of this message | ||
On Thu, 2008-10-23 at 02:26 -0400, Andrew Ballard wrote:
> On Thu, Oct 23, 2008 at 2:22 AM, Ashley Sheridan
> <ash@ashleysheridan.co.uk> wrote:
> > On Wed, 2008-10-22 at 22:30 -0400, Andrew Ballard wrote:
> >> On Wed, Oct 22, 2008 at 10:15 PM, Jason Todd Slack-Moehrle
> >> <mailinglists@mailnewsrss.com> wrote:
> >> > On Oct 22, 2008, at 6:58 PM, Stut wrote:
> >> >
> >> >> On 23 Oct 2008, at 02:41, Jason Todd Slack-Moehrle wrote:
> >> >>>
> >> >>> Actually i am ending the row headers with a chr(10); // LINE FEED
> >> >>
> >> >> From the code you included in your original post...
> >> >>
> >> >>> echo "/n";
> >> >>
> >> >>
> >> >> There was no mention of chr(10).
> >> >>
> >> >> Outputting data in CSV format is not hard. Simply echo the header row if
> >> >> necessary, followed by "\n". Then output each line taking care to put string values in
> >> >> quotes which means you also need to escape quotes in the data. After each line echo "\n".
> >> >> That's really all there is to it.
> >> >>
> >> >> If you're still having problems I suggest you post the exact code
> >> >> you're using, anything else just makes it harder for us to provide effective help.
> >> >>
> >> >> -Stut
> >> >>
> >> >>> On Oct 22, 2008, at 5:12 PM, Stut wrote:
> >> >>>
> >> >>>> On 23 Oct 2008, at 00:59, Jason Todd Slack-Moehrle wrote:
> >> >>>>>
> >> >>>>> After I right out the column headers do I have to put a
> >> >>>>> '/n' to have it start a new line in the CSV file? I think I do.
> >> >>>>
> >> >>>> A new line is \n not /n, and it must be in double quotes (") not
> >> >>>> single (').
> >> >>
> >> >
> >> > Oh, I am not putting quotes around each field that i get from MySQL. There are no
> >> > quotes in the data so that is good.
> >> >
> >> > Sorry I put "/n" and I meant to put chr(10).
> >> >
> >> > -Jason
> >> >
> >>
> >> Jason, one of the points that Stut was trying to explain is that "\n"
> >> and chr(10) are the same thing. They are just two different ways to
> >> refer to a newline (line feed) character. Most of us probably use "\n"
> >> rather than chr(10) in PHP, though. So, the following two lines are
> >> equivalent:
> >>
> >> <?php
> >> echo "Item1, Item2, Item3" . chr(10);
> >>
> >> // Note this uses double quotes.
> >> echo "Item1, Item2, Item3\n";
> >>
> >> // It won't be the same at all if you use single quotes
> >> echo 'Item1, Item2, Item3\n';
> >>
> >> ?>
> >>
> >> At any rate, you are correct that you need a line feed/newline
> >> character at the end of every row in CSV including the header row.
> >>
> >> Andrew
> >>
> > A line feed and \n are not the same thing at all. Different operating
> > systems implemented a different method of line endings depending on what
> > they thought best, either a carriage return or line feed or both. a \n
> > is meant to be an OS agnostic way of implementing this in the various
> > programming languages, outputting something that any OS can understand
> > in the intended way.
> >
> >
> > Ash
> > www.ashleysheridan.co.uk
>
> As I understood, \n was strictly a line feed (ASCII character 10), not
> an "OS agnostic" end-of-line terminator. It happens to be the line
> terminator for *nix. Windows uses the combined carriage return and
> line feed characters (ASCII characters 13 and 10) which are
> represented by \r\n in PHP, while Mac used only the the carriage
> return. There is a PHP constant PHP_EOL that I'm pretty sure is
> supposed to represent the line terminator defined on the operating
> system of the computer executing the script, but I don't think it is
> truly "agnostic" either. At least, if you have a text file saved in
> Windows and split it on a Linux machine based on PHP_EOL, I believe
> all of your array values will have a carriage return character hanging
> on the end of them. Am I mistaken?
>
> Andrew
I'm afraid I do disagree with your there:
"When writing a file in text mode, '\n' is transparently translated to
the native newline sequence used by the system"
This is from the Wikipedia article I found:
http://en.wikipedia.org/wiki/Newline
Ash
www.ashleysheridan.co.uk