#1 18.04.06 22:16
[php] Как сделать вывод строки?
Существует текстовый файл с информацией:
[02 Mar 18:37:44] ALL [Flipp] ya
[02 Mar 18:37:46] ALL [Blade] ok
[02 Mar 18:37:56] ALL [Flipp] lol
[02 Mar 18:38:00] TELL [Wierdodude to Aacasha] guessing i become raider?
[02 Mar 18:38:01] ALL [Flipp] let me PVP ur prohpet now btw
[02 Mar 18:38:05] ALL [Blade] nah
[02 Mar 18:38:05] ALL [Flipp] I bet id win
[02 Mar 18:38:09] TELL [Aacasha to wierdodude] well you can be either
[02 Mar 18:38:12] ALL [Blade] what lvl are you?
[02 Mar 18:38:15] ALL [Flipp] 40
[02 Mar 18:38:16] TELL [Aacasha to wierdodude] riader = destroyer
[02 Mar 18:38:19] ALL [Blade] lol...
[02 Mar 18:38:24] ALL [Blade] that took forever
[02 Mar 18:38:24] ALL [Flipp] yah
[02 Mar 18:38:24] TELL [Aacasha to wierdodude] tyrant does FAST insane dmg though
[02 Mar 18:38:25] TELL [Wierdodude to Aacasha] wats the upgrade hatchling to strider?
[02 Mar 18:38:26] BOT [Flipp] ur scared
[02 Mar 18:38:27] BOT [Flipp] lol
и т.д.
Нужно, что бы это выводилось в таком виде:
[02 Mar 18:37:44] ALL [Flipp] ya
[02 Mar 18:37:46] ALL [Blade] ok
[02 Mar 18:37:56] ALL [Flipp] lol
[02 Mar 18:38:01] ALL [Flipp] let me PVP ur prohpet now btw
[02 Mar 18:38:05] ALL [Blade] nah
[02 Mar 18:38:05] ALL [Flipp] I bet id win
[02 Mar 18:38:12] ALL [Blade] what lvl are you?
[02 Mar 18:38:15] ALL [Flipp] 40
[02 Mar 18:38:19] ALL [Blade] lol...
[02 Mar 18:38:24] ALL [Blade] that took forever
[02 Mar 18:38:24] ALL [Flipp] yah
[02 Mar 18:38:26] BOT [Flipp] ur scared
[02 Mar 18:38:27] BOT [Flipp] lol
т.е. только строки в которых есть "] ALL" и "] BOT"
Как можно осуществить такой вывод, с помощью php.
К сожалению вариант с БД в данном случае не применим.
Offline
#3 19.04.06 01:10
Re: [php] Как сделать вывод строки?
Огромное спасибо, я чуток переделал, и получилось, то, что я хотел =)
Offline
#5 19.04.06 13:11
Re: [php] Как сделать вывод строки?
Offline
#6 19.04.06 15:35
Re: [php] Как сделать вывод строки?
Matrim написал(а):
Код::
!==falseкакая-то странная конструкция
еще скипт будет реагировать на строки "] ALL" в сообщении, например, т.е. так писать нельзя. либо регулярное выражение, либо нужная подстрока ищется в конкретной позиции.
Просто не приходит в голову, к чему, тут еще можно привязатся. можно к примеру "] ALL [", мне кажется маловерятно, что такие слова будут часто встречатся =)
Offline
#7 19.04.06 17:31
Re: [php] Как сделать вывод строки?
ага, про оператор !== я уже прочитал, наверное он полезный
пугает логика автора фукции strpos. так как позиция не может быть отрицательной, то достаточно вернуть отрицательное значение в случае, если ничего не нашли. вернуть что-то, для чего нужен специальный оператор сравнения - это бред примерно той же категории, что и BOOL с точки зрения микрософт, который по смыслу принимает значения -1,0,1
кроме того, это не решает вопрос ложного срабатывания на строку сообщения
Offline
#9 19.04.06 23:29
Re: [php] Как сделать вывод строки?
URANUS написал(а):
Огромное спасибо, я чуток переделал, и получилось, то, что я хотел =)
А как к примеру сделать, что бы скрипт выводил не весь файл, а последние 100 строк?
Исправлено URANUS (20.04.06 00:38)
Offline
#10 20.04.06 23:37
Re: [php] Как сделать вывод строки?
Сделал вывод за последний день, но, как вывести именно последние 100 строк еще не нашел =). Кто подскажет?
Код: php:
$today = date("d \а\п\р"); $fp = fopen("c:/server/gameserver/log/chat.log", 'r'); $buffer = $output = ''; while ($buffer = fgets($fp, 4096)) { if (strpos($buffer, $today)!==false and strpos($buffer, '] ALL ')!==false||strpos($buffer, '] SHOUT')!==false) $output .= $buffer."<br />"; } fclose($fp); echo $output;
Offline
#11 20.04.06 23:43
Re: [php] Как сделать вывод строки?
Вот так, например:
Код: php:
$fp = fopen("c:/server/gameserver/log/chat2.log", 'r'); $buffer = ''; $output = array(); while ($buffer = fgets($fp, 4096)) if (strpos($buffer, '] ALL')!==false||strpos($buffer, '] SHOUT')!==false) $output[] = $buffer; fclose($fp); for ($i=count($output)-100; $i < count($output)-100; $i++) echo $output[$i]."\n";
Offline

