У меня есть следующий код: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 test для> = 2, но есть ли способ, которым я могу заставить его просто признать факт, что есть два элемента? Мне не нравится, что fgetcsv находит «загадочных» персонажей в конце строки.
Возможно, это unix-сервер, на котором установлена ошибка на основе Windows? Если это так, и я запускаю сервер ubuntu без dos2unix, где я его получу?
+1 для эмоциональной реакции на проблемы в коде/данных – thetaiko
Попробуйте выполнить [hex dump] (http://en.wikipedia.org/wiki/Hex_editor) файла CSV, чтобы узнать, соответствует ли содержимое файла вашему ожидания; фактическое содержание может отличаться от ваших исходных предположений. Для этого нужно сделать что-то вроде шестнадцатеричного редактора вместо текстового редактора, так как последнее не всегда будет различать байты, которые PHP определенно обрабатывает по-разному. –
Мое предположение - CR-символы (\ r) перед символом NL (\ n). Используйте 'dos2unix filename', чтобы очистить их. Удачи. – shellter