3

我有以下代码:

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 服务器,我从哪里得到它?

4

2 回答 2

0

您可能在一行的末尾有制表符:

value<tab>value<tab><newline>

如果是这种情况,dos2unix 不会帮助你。您可能需要做一些事情,比如将每一行读入一个变量, trim() 变量,然后使用 str_getcsv() 来拆分它。

于 2012-03-07T18:04:01.957 回答
0

你有可能在这些行的末尾有一个标签吗?它们是不可见的,通常很难发现……您可能需要仔细检查。

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

ini_set('auto_detect_line_endings', true);

省去了很多麻烦。

于 2012-03-07T18:06:15.267 回答