fgetcsv返回太多条目

时间:2012-03-07 17:52:06

标签: php unix fgetcsv

我有以下代码:

while (!feof($file)) {
        $arrayOfIdToBodyPart = fgetcsv($file,0, "\t");
            if (count($arrayOfIdToBodyPart)==2){

问题是,文件的内容如下所示:

39      ankle
40      tibia
41      Vastus Intermedius

等等

有时,if中的测试会显示三个条目,第一个是数字,第二个是名称,第三个只是...... emtpy。

这会导致if块失败,让我感到难过。我知道我可以只为> = 2进行if块测试,但是有什么方法我可以让它只是认识到有两个项目的事实?我不喜欢fgetcsv在行尾找到“神秘”字符。

这可能是运行基于Windows的文件错误的unix服务器吗?如果是这样,我正在运行没有dos2unix的ubuntu服务器,我在哪里可以得到它?

2 个答案:

答案 0 :(得分:0)

你可能在一行的末尾有标签:

value<tab>value<tab><newline>

如果是这样,dos2unix将无法帮助您。您可能需要执行诸如将每行读入变量,trim()变量,然后使用str_getcsv()来拆分它。

答案 1 :(得分:0)

你可能在这些行的末尾有一个标签吗?它们是看不见的,往往很难发现......你可能想要仔细检查。

此外,如果你正在使用csv文件,当你在本地运行Windows并且服务器是unix时,我发现了这一行:

ini_set('auto_detect_line_endings', true);

节省了很多麻烦。