0

我有一个用 Open Office 电子表格生成的 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 中的键、值、换行符?

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

谢谢!

4

1 回答 1

1

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

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

于 2012-06-11T09:24:52.250 回答