Официальный сайт студ.городка НГТУ
Программирование и БД » [php] Как сделать вывод строки? 

#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

#2  18.04.06 22:21

Re: [php] Как сделать вывод строки?

примерно так:

Код: php:

$fp = fopen('file.txt', "r");
$buffer = $output = '';
 
while ($buffer = fgets($fp, 4096))
{
	if (strpos('] ALL', $buffer)!==false||strpos('] BOT',$buffer)!==false)
           $output .= $buffer."\n";
}
 
fclose($fp);
echo $output;

Offline

#3  19.04.06 01:10

Re: [php] Как сделать вывод строки?

Огромное спасибо, я чуток переделал, и получилось, то, что я хотел =)

Код: php:

    $fp = fopen("c:/server/gameserver/log/chat2.log", 'r');
    $buffer = $output = '';
 
while ($buffer = fgetss($fp, 4096))
{
if (strpos($buffer, '] ALL')!==false||strpos($buffer, '] SHOUT')!==false)
           $output .= $buffer."<br />";
}
 
fclose($fp);
echo $output;

Offline

#4  19.04.06 12:09

Re: [php] Как сделать вывод строки?

Код::

!==false

какая-то странная конструкция

еще скипт будет реагировать на строки "] ALL" в сообщении, например, т.е. так писать нельзя. либо регулярное выражение, либо нужная подстрока ищется в конкретной позиции.

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

#8  19.04.06 17:37

Re: [php] Как сделать вывод строки?

ну лучше регулярку юзать конечно =)

Offline

#9  19.04.06 23:29

Re: [php] Как сделать вывод строки?

URANUS написал(а):

Огромное спасибо, я чуток переделал, и получилось, то, что я хотел =)

Код: php:

    $fp = fopen("c:/server/gameserver/log/chat2.log", 'r');
    $buffer = $output = '';
 
while ($buffer = fgets($fp, 4096))
{
if (strpos($buffer, '] ALL')!==false||strpos($buffer, '] SHOUT')!==false)
           $output .= $buffer."<br />";
}
 
fclose($fp);
echo $output;

А как к примеру сделать, что бы скрипт выводил не весь файл, а последние 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

#12  20.04.06 23:46

Re: [php] Как сделать вывод строки?

Код: php:

$file=file("filename");
 
$Start=count($file)-100;
$Start=$Start<0?0:$Start;
 
for($i=$Start; $i<count($file);$i++)
{
 
bla bla bla...
 
}
 

Offline

#13  20.04.06 23:50

Re: [php] Как сделать вывод строки?

Ж) Спасибо, действительно просто. Сделал, как посоветовал Karminsky.
Удивляюсь его быстрым ответам.

Исправлено URANUS (20.04.06 23:54)

Offline

Программирование и БД » [php] Как сделать вывод строки? 

ФутЕр:)

© Hostel Web Group, 2002-2025.   Сообщить об ошибке

Сгенерировано за 0.247 сек.
Выполнено 14 запросов.