我有以下代码:fgetcsv返回太多的条目
while (!feof($file)) {
$arrayOfIdToBodyPart = fgetcsv($file,0, "\t");
if (count($arrayOfIdToBodyPart)==2){
的问题是,该文件的内容是这样的:
39 ankle
40 tibia
41 Vastus Intermedius
等
有时,在if中的测试会显示三个条目,其中第一个是数字,第二个是名称,第三个只是... emtpy。
这会导致if块失败,并且我很难过。我知道我可以让if block测试> = 2,但是有什么办法可以让我认识到有两个项目的事实吗?我不喜欢fgetcsv在行尾找到“神秘”角色。
这可能是一个unix服务器运行基于Windows的文件错误?如果是这样,并且我在没有dos2unix的情况下运行Ubuntu服务器,我在哪里得到它?
+1对您的代码/数据中的问题的情绪反应 – thetaiko 2012-03-07 17:59:22
尝试执行CSV文件的[hex转储](http://en.wikipedia.org/wiki/Hex_editor)以查看文件的内容是否与您的期望;实际内容可能与您的初始假设不同。有必要使用十六进制编辑器而不是文本编辑器来完成此操作,因为后者不会总是区分PHP确实会以不同方式处理的字节。 – 2012-03-07 18:11:18
我的猜测是在NL char(\ n)之前的CR chars(\ r)。使用'dos2unix文件名'来清理它们。祝你好运。 – shellter 2012-03-07 20:01:06