Войти

Показать полную графическую версию : [решено] Вывод строк из файла чата (рег. выражение?) | PHP


D_Master
12-04-2009, 21:47
Всем привет!
Имеется лог сервера WoW, хотелось бы выводить его содержимое на сайте.
Содержимое файла:
2009-04-13 00:00:00 [Player]->CHANNEL:[Поиск спутников] Сообщение в чат
И т.д. и т.п.
Как можно выводить все строки из файла таким форматом:
Player (13-04-2009 00:00:00) [Поиск спутников]: Сообщение в чат?
Сам я в регулярных выражениях полный ноль, если не сложно, подскажите как это делается :)

Заранее спасибо!

proxy
13-04-2009, 11:36
<?
$sString = '2009-04-13 00:00:00 [Player]->CHANNEL:[Поиск спутников] Сообщение в чат';
$sString = ereg ('(.+) \[(.+)\].+:(\[.+\]) (.*)', $sString, $aResult);
echo '<b>'.$aResult[2].'</b> <i>('.$aResult[1].') <b>'.$aResult[3].'</i>:</b> '.$aResult[4]."\n<br>";
?>

D_Master
13-04-2009, 14:04
proxy, спасибо, всё работает.
А вот вопрос: как можно из текстового файла выдирать строчки, загонять их переменные и так же выводить?

proxy
13-04-2009, 15:08
<?php
$sFilePath = 'test.txt'
$hFile=fopen('$sFilePath','r') or die('Ошибка');
$sFileText = fread($hFile, filesize($sFilePath))
fclose($hFile);
//далее выдирание нужного текста из $sFileText тем же ere, хотябы
?>


или такой пример:

<?php
// получить web-страницу в виде массива и напечатать его
$fcontents = file ('http://www.example.com/');
while (list ($line_num, $line) = each ($fcontents)) {
echo "<b>Line $line_num:</b>; ", htmlspecialchars ($line), "<br>\n";
}

// получить web-страницу в строке
$fcontents = implode ('', file ('http://www.example.com/'));
?>


тут смотря какой текст и как его вытаскивать.
первый вариант думую самый быстрый:
1 прочитал файл в переменную
2 и рег. выражениями вытащить, то, что интерисует

D_Master
13-04-2009, 16:19
proxy, огромное спасибо! Совместил первый и третий Ваши скрипты, получил этот:
<?php
// получить web-страницу в виде массива и напечатать его
$fcontents = file ('http://localhost/log.txt');
while (list ($line_num, $line) = each ($fcontents)) {
$sString = ereg ('(.+) \[(.+)\].+:(\[.+\]) (.*)', $line, $aResult);
echo '<b>'.$aResult[2].'</b> <i>('.$aResult[1].') <b>'.$aResult[3].'</i>:</b> '.$aResult[4]."\n<br>";
}

// получить web-страницу в строке
$fcontents = implode ('', file ('http://localhost/'));
?>, который вернул то, что от него и требовалось :)

proxy
13-04-2009, 19:12
Пожалуйста )) Наслаждайтесь ))

не-не-не....примеры из справки, последние 2.....качайте справку в chm
- очень удобно )




© OSzone.net 2001-2012