スポンサーサイト 

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[PHP] fputcsvの改行コードはLF 

PHPには、配列をCSV形式の一行としてファイルに書き出すfputcsvという関数があります。
この関数は、改行まで出力しますが、改行コードを指定することができません。

int fputcsv ( resource $handle , array $fields [, string $delimiter = ',' [, string $enclosure = '"' ]] )
fputcsv() は、行(fields 配列として渡されたもの)を CSV としてフォーマットし、それを handle で指定したファイルに書き込みます (いちばん最後に改行を追加します)。
PHP_EOLのコードを使用するのかと思いきや、現時点ではLF固定となっています。

	...

PHP_FUNCTION(fputcsv)
{
	char delimiter = ',';	/* allow this to be set as parameter */
	char enclosure = '"';	/* allow this to be set as parameter */
	const char escape_char = '\\';

	...

	smart_str_appendc(&csvline, '\n');
	smart_str_0(&csvline);

	...
}
(直書きかよ!)


2008年にパッチが上がっていますが、PHP5.4にも反映されていません。
今後反映されるかも不明です。
任意のコードで出力したい場合は、ストリームフィルターで調整する必要があります。


enclosureの仕様も微妙だし、fputcsvいけてない。

コメント

コメントの投稿















管理者にだけ表示を許可する

トラックバック

この記事のトラックバックURL
http://yotama.blog84.fc2.com/tb.php/23-cc0c1538
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。