[PHP-users 10595] fgetcsv の仕様について
Susumu_Abe GDs.net
php-users@php.gr.jp
Mon, 7 Oct 2002 11:12:28 +0900
いつもROMながら勉強させていただいております。
阿部と申します。
CSV処理について、下記のようなサンプルで、fgetcsv関数の
動作を試したところ、次のような現象がありました。
(Linux Redhat7.2, PHP4.1.2)
// テストデータ
"[01*01]","[01*02]","[01*03]"
'[02*01]','[02*02]','[02*03]'
"[03*01]",'[03*02]',"[03*03]",
// テストソース
<?php
$row = 1;
$fp = fopen ("$filename","r");
while ($data = fgetcsv ($fp, 10000, ",")) {
$num = count ($data);
print "<p> $num fields in line $row: <br>";
$row++;
for ($c=0; $c < $num; $c++) {
print $data[$c] . "<br>";
}
}
fclose ($fp);
?>
// 出力結果
3 fields in line 1:
?"[01*01]" <---
[01*02]
[01*03]
3 fields in line 2:
'[02*01]'
'[02*02]'
'[02*03]'
4 fields in line 3:
[03*01]
'[03*02]'
[03*03]
ダブルクォーテーションの取り扱いについて、 最初の1件目のみ
データとして扱われ、以後データ区切り文字列とはみなされているように
見受けます。
これは仕様ということなのでしょうか?やや不思議に思いましたので
ご報告させていただきます。
# 折角ですから引数で\t などなどセパレータを任意にもてるとうれしいような?
━[発信]━━━━━━━━━━━━━━━━━━━━━━━・・・・
阿部 進 アベ ススム
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
□ Mail : haa08560@jnb.odn.ne.jp ; s01abe80@hotmail.com
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━