Чтение txt файла

H
На сайте с 05.08.2008
Offline
18
1080

Приветствую!

Есть txt файл такого содержания:


3527 04.02.2010 13:16:03 213.184.254.11 Mustang 1
3417 04.02.2010 10:45:41 94.45.190.223 Glum 1
3074 03.02.2010 22:24:56 213.184.224.42 Dreamer 1
2957 03.02.2010 20:34:40 213.184.255.11 Bandit 1
2808 03.02.2010 18:50:43 213.184.224.41 Смерть 1
2667 03.02.2010 16:38:57 217.21.60.110 joni 1

Гулил, нашел как читать, переходить по строкам, но надо не это, надо искать в этом файле имя($votename) и если найдет - считывать в этой строке id голоса(самое первое число на каждой строчке) и забивать его в переменную $voteid

формат:

Формат данных - plain text. Каждая строка - отдельный голос. Поля разделены знаком "табуляция" в следующем порядке:

ID Время IP_адрес Имя_персонажа Тип

где "ID" - уникальный идентификатор данного голосования

где "Время" - время голосования в формате дд.мм.гггг чч:мм:cc

IP_адрес ip-адрес проголосовавшего в формате ipv6

Имя_персонажа - имя голосоваашего

Заранее большое спасибо!

alex_zlo
На сайте с 13.01.2008
Offline
29
#1


$votename = 'Bandit';
$voteid = array();
$file = file('file.txt');
foreach($file as $key=>$value){
$exp = explode(' ',$value);
if($exp[3]==$votename){
$voteid[] = $exp[0];
}
}

$voteid будет содержать массив в котором все id пользователя $votename

[Удален]
#2

но лучше использовать базу

H
На сайте с 05.08.2008
Offline
18
#3

alex_zlo, просто пишет слово Array, хотя имя такое-же

alex_zlo
На сайте с 13.01.2008
Offline
29
#4
Hilgert:
alex_zlo, просто пишет слово Array, хотя имя такое-же

$exp = explode(' ',$value); 

1)Я не знаю что у Вас за разделитель поэтому поставил пробел. почитайте про функцию explode

а чтоб посмотреть что в массиве напишите

print_r($voteid);

это я написал вариант если один и тот же ник имеет несколько id. Вы же не написали уникален ли ник.

H
На сайте с 05.08.2008
Offline
18
#5

alex_zlo,

http://rghost.net/934775 вот этот файл, скачав его, а не открывая в браузере, он не построчный вообще вроде, а в браузере построчный

alex_zlo
На сайте с 13.01.2008
Offline
29
#6

там разделитель tab

$exp = explode("/t",$value);  
H
На сайте с 05.08.2008
Offline
18
#7

alex_zlo, возможно я что-то не так делаю, вот код:

$votename = "Глум";
$voteid = array();
$file = file('http://aion.mmotop.ru/stats/80e676d38a8971dd7256f61577a16346/133/60.txt');
foreach($file as $key=>$value){
$exp = explode("/t",$value);
if($exp[3]==$votename){
$voteid[] = $exp[0];
}
}
print_r($voteid);

Но ничего, кроме Array ( ) нету

Hilgert добавил 04.02.2010 в 18:55

поправил первый и пост и там описано что за формат и буду рад если вы поможете с этим вопросом!

alex_zlo
На сайте с 13.01.2008
Offline
29
#8


$replace = array(" ","выдели этот текст и нажми кнопу Tab на клаве");
$votename = 'Глум';
$voteid = array();
$file = file('http://aion.mmotop.ru/stats/80e676d38a8971dd7256f61577a16346/133/60.txt');
$content = str_replace($replace,'::',$file);
foreach($content as $key=>$value){
$exp = explode("::",$value);
if(trim($exp[4])==$votename){
$voteid[] = $exp[0];
}
}
print_r($voteid); //выводим массив, него пишутся все id пользователя $votename
echo $voteid[0]; //выводим первое id в списке которое встречается у пользователя $votename
H
На сайте с 05.08.2008
Offline
18
#9

Спасибо! Работает, но только с английскими именами! А как можно русские имена искать, страница у меня в UTF-8

H
На сайте с 17.02.2009
Offline
50
#10

alex_zlo, спасибо! похожая проблема была. (тоже под топ)

Вопрос: а можно ли исключать из поиска те строчки, если такой id уже есть в базе.

Например я запросом выведу все id голосований, получается массив, как теперь исключить из поиска в текстовом файле те строки, где есть этот id.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий