我有一个用Open Office Spreadsheet生成的csv,分隔符是逗号,文本包装器是“。
我只想要电子表格中的列,因为它是一些键值列表, 像:
a -> b
aa -> bb
aaa -> bbb
所以我的电子表格只有两列,每行包含一个键值对,一个单元格中的每个键,一个单元格中的每个值。但是当我使用
时if ($_FILES ['userfile'] ['error'] == UPLOAD_ERR_OK &&
is_uploaded_file ( $_FILES ['userfile'] ['tmp_name'] )) {
$csvfile = file_get_contents ( $_FILES ['userfile'] ['tmp_name'] );
}
$dict = str_getcsv($csvfile);
然后var_dump $ dict,我得到了
array(4) { [0]=> string(1) "a" [1]=> string(6) "b "aa"" [2]=>
string(8) "bb "aaa"" [3]=> string(3) "bbb" }
参见索引1,其中第一个值“b”和第二个键“aa”存储在一个索引中。
OpenOffice不会在值后面添加逗号,也就是在新行之前。 如何避免两个字符串最终出现在一个索引中? 我能以某种方式告诉str_getcsv,当两个“相互跟随时,它也是一个分隔符吗?或者我可以添加第三个列总是包含#并说”如果它包含#,它是一个换行符? (我试过了,无法管理..) 或者是否有一个函数,它需要csv中的键,值,换行符?
这是正确的方法吗?我确信人们经常这样做,但我不知道如何谷歌。
谢谢!
答案 0 :(得分:1)
如何使用fgetcsv()
?
http://www.php.net/manual/en/function.fgetcsv.php
它逐行读取,链接中有一个例子。