#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. Мне нужно было бы это увидеть, да.