On Thu, Oct 23, 2008 at 2:54 AM, Ashley Sheridan
<[EMAIL PROTECTED]> wrote:
> On Thu, 2008-10-23 at 02:26 -0400, Andrew Ballard wrote:
>> On Thu, Oct 23, 2008 at 2:22 AM, Ashley Sheridan
>> <[EMAIL PROTECTED]> 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
>> >> <[EMAIL PROTECTED]> 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
>
>

Interesting. I didn't know it behaved differently when writing files.
I just know that when using it as a search pattern or for splitting
text that it is only the newline character. I thought the behavior you
are describing was specifically why PHP added PHP_EOL. Further down
the same article it says:

"Some languages have created special variables, constants and
subroutines to facilitate newlines during program execution. One
example is the PHP constant PHP_EOL, which will produce either '\r\n'
or '\n' appropriate to the operating system the program is executed
on.[3] Though special newline handling facilities can aid execution
during runtime, they do not ensure the validity of newlines for the
source code itself."

I guess since PHP is written in C it picks up the behavior you
describe from the underlying libraries. That's definitely interesting
to keep in mind.

Andrew

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to