PHP - fgetcsv - 区切り文字は無視されていますか?
質問
私は確信している...
私が出力するCSVファイルの各行をしようとしている、と区切り文字は無視されているように思える私の構文が間違ってどこかにあるが、それを特定するように見えることはできません...
このようなCSVファイルになります。
ID,Code,Count
TM768889,02001,10
TM768889,02002,10
TM768889,02003,10
TM768889,02004,10
TM768889,02005,10
私は、出力しようとしている。
0 - ID,Code,Count
1 - TM768889,02001,10
2 - TM768889,02002,10
3 - TM768889,02003,10
4 - TM768889,02004,10
5 - TM768889,02005,10
しかし、その代わりに、それはこれを出力しています。
0 - ID
1 - Code
2 - Count TM768889
3 - 02001
4 - 10 TM768889
5 - 02002
6 - 10 TM768889
7 - 02003
8 - 10 TM768889
9 - 02004
10 - 10 TM768889
11 - 02005
12 - 10
ここに私のコードです:
$row = 0;
if(($handle = fopen($_FILES["Filedata"]["tmp_name"], "r")) !== FALSE) {
$string = '';
while(($line = fgetcsv($handle,1000,",")) !== FALSE) {
$num = count($line);
$row++;
for($c=0; $c < $num; $c++) {
$string .= $c.' - '.$line[$c].'<br />';
}
}
fclose($handle);
echo $string;
}
解決
なぜfgetcsv
でわざわざ?あなただけの代わりにfgets
を使用することができますようにそれはそうあなたはただ、それがバックアウトラインと唾を取っている。
$row = 0;
if(($handle = fopen($_FILES["Filedata"]["tmp_name"], "r")) !== FALSE) {
$string = '';
while(($line = fgets($handle)) !== FALSE) {
$row++;
$string .= $row.' - '.$line.'<br />';
}
}
fclose($handle);
echo $string;
}
あなたの問題はあなたのような全体が意図したとおり、CSVファイルではなく、行の各値のフルラインをプリントアウトしているということです。
他のヒント
まず、あなたのコードが貼り付けたものを印刷しません。カウンタは$ c変数と一致していません。
これは私が得るものです。
0 - ID
1 - Code
2 - Count
0 - TM768889
1 - 02001
2 - 10
0 - TM768889
1 - 02002
2 - 10
0 - TM768889
1 - 02003
2 - 10
0 - TM768889
1 - 02004
2 - 10
0 - TM768889
1 - 02005
2 - 10
あなたのデータファイルが巨大ではない場合、私は、ファイル()関数を使って配列にファイルをロードするためにあなたをお勧めします。その後することができますループ配列および出力スルー単にラインで値ます。
$lines=file($_FILES["Filedata"]["tmp_name"]);
foreach($lines as $line) print($line.'<br/>');
あなたが行を解析する必要がある場合は、単に各値で取得するために爆発()関数を使用します。
所属していません StackOverflow