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