来自csv的键值数组,在电子表格中只有两列

时间:2012-06-11 09:19:12

标签: php csv

我有一个用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中的键,值,换行符?

这是正确的方法吗?我确信人们经常这样做,但我不知道如何谷歌。

谢谢!

1 个答案:

答案 0 :(得分:1)

如何使用fgetcsv()http://www.php.net/manual/en/function.fgetcsv.php

它逐行读取,链接中有一个例子。