我有以下代码:
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服务器,我在哪里可以得到它?
答案 0 :(得分:0)
你可能在一行的末尾有标签:
value<tab>value<tab><newline>
如果是这样,dos2unix将无法帮助您。您可能需要执行诸如将每行读入变量,trim()变量,然后使用str_getcsv()来拆分它。
答案 1 :(得分:0)
你可能在这些行的末尾有一个标签吗?它们是看不见的,往往很难发现......你可能想要仔细检查。
此外,如果你正在使用csv文件,当你在本地运行Windows并且服务器是unix时,我发现了这一行:
ini_set('auto_detect_line_endings', true);
节省了很多麻烦。