Не удается правильно прочитать из файла .txt в php

#php #strpos

#php #strpos

Вопрос:

Я пытаюсь прочитать текстовый файл, загруженный с www.groupsort.com

Формат выглядит следующим образом:

 Name    Rank    Team
Mike     1      Team 2
Charlie  5      Team 1
Joe      3      Team 1
David    21     Team 3
 

Также я не знаю, связано ли это, но когда я перешел к pico this file, он не показывал мне открытый текст, это была просто куча мусора, но это .txt файл. Странно?

Итак, я хочу получить имена пользователей и сохранить их в переменной. Разве что-то подобное не должно работать?

 $file = "peopletomove.txt";

$fh = fopen($file,'r');
$MoveTSusers = array();


while (!feof($fh)) { 

   $line = fgets($fh); 
   echo $line."n";

   $name = strpos($line, " ");   
   $name2 = substr($line, 0, $name);
   echo $name2."n";
 

Комментарии:

1. Я бы обязательно проверил кодировку не только файла .txt, но и если в php есть опция для чтения в определенном типе кодировки. Если у вас есть символы UTF-8 в файле .txt и вы читаете в ascii, есть вероятность мусора. Кроме того, если файл был создан в Windows и прочитан в системах * nix, он может оставить дополнительные символы в текстовом файле. Создайте тестовый файл в pico и прочитайте его в качестве дополнительного теста, чтобы убедиться, что проблема заключается в файле, а не в вашем коде.

2. Я использовал тестовый файл, поэтому я думаю, что это может быть проблемой.

Ответ №1:

У вас есть значения, разделенные табуляцией. Так что разделите вкладку:

 while(!feof($fh)) {
    $line = trim(fgets($fh));
    if( !$line) continue; // blank line
    list($name,$rank,$team) = explode("t",$line);
}
 

Комментарии:

1. Можете ли вы вывести $line s и сказать мне, в какой строке (ввода) происходит ошибка?

2. gyazo.com/8f37e2299e294fc74d158577ec233b82 Это результат, который я получаю после его запуска. Кроме того, строка 147 — это список ($name,$ rank,$team) = explode(» t»,$line);

3. Это работает, у меня только одна проблема, теперь первая строка пропускается. Так, например, он не перемещает пользователя в первой строке. Я не знаю, связано ли это, и вам, вероятно, придется просмотреть остальную часть моего кода?

4. Мне нужно было бы это увидеть, да.