|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2007-08-21 06:13 UTC] php at phihag dot de
Description:
------------
Currently, there is no way to set a custom line ending when writing CSV files with fputcsv. For instance, this is needed when writing CSV for various Microsoft products which require "\r\n" as line ending.
Therefore, an optional parameter $ending (as for stream_get_line), which defaults to auto-detection (current behaviour), would be nice.
To ensure the result is still a valid CSV file, either document using anything else than line endings (or tabs etc.) is not a good idea, or define/use constants for the common line endings.
Reproduce code:
---------------
<?php
$f = fopen("php://stdout", "w");
fputcsv($f, array("a", "b c"), ",", '"', "\r\n");
fclose($f);
?>
Expected result:
----------------
As a php string:
"a,\"b c\"\r\n"
Actual result:
--------------
n/a, without the last parameter: "a,\"b c\"\n" (hardcoded line ending in file.c)
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Sun Oct 26 12:00:01 2025 UTC |
Does it work if you open the file in text mode ("wt") ? That *should* do the trick.No, same behavior (tested on Linux). From php.net/fopen: *Windows* offers a text-mode translation flag ('t') ... Small correction of the original bug report: \n is always used, have a look at ext/standard/file.c:~1991: (...) smart_str_appendc(&csvline, '\n'); smart_str_0(&csvline); (...)