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


Key-Value Array from csv with just two columns in spreadsheet

我有一个csv,用Open Office Spreadsheet生成,分隔符是逗号,文本包装器是"。

我只想在我的电子表格中列,因为它是一些键值列表,喜欢:

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 中的键、值、换行符?

正确的方法是什么?我敢肯定人们经常这样做,但我不知道如何谷歌它。

谢谢!

使用fgetcsv()怎么样?http://www.php.net/manual/en/function.fgetcsv.php

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