2016-04-15 12 views
2

説明フィールド内に改行を含むCSVファイルを処理しようとしています。しかし、str_getcsvを使って行を配列に分割すると、エンクロージャー内の改行でも分割されます。 例:str_getcsvエンクロージャが改行で機能しない

$data ='header1,header2 
value1,"value2a 
values2b"'; 
$data = str_getcsv($data, PHP_EOL, '"'); 
var_export($data); 

出力:

array (
    0 => 'header1,header2', 
    1 => 'value1,"value2a', 
    2 => 'value2b"', 
) 

期待値:

array (
    0 => 'header1,header2', 
    1 => 'value1,"value2a 
value2b"', 
) 

PHPのバージョンである5.6.19(CLI)

+0

あなたの出力の区切り文字は表示されません。str_getcsvに区切り文字PHP_EOLを指定すると、改行時に展開されます。PHP_EOLの代わりに "、"を渡すと、出力 – pritesh

+0

引用符で囲まれていない改行を分割する別の方法はありますか?または、私はそれを行うためにいくつかの正規表現を使用する必要があると思いますか? – jjmirks

答えて

-2

私の質問への答えはここにあります。 「ユーザーが投稿したノート」セクション:http://php.net/manual/en/function.str-getcsv.php

明らかにPHPのCSV関数は、他のCSVプログラムで使用されている標準に準拠していません。

関連する問題