синтаксический анализ однострочного текстового журнала

Итак, у меня есть файл журнала / TXT, который содержит следующее:

31 dec. 2014 11:56 - UserA: Hi31 dec. 2014 11:56 - UserB: Hi to you31 dec. 2014 11:56 - UserA: Whats your name?31 dec. 2014 11:57 - UserB: Nancy

Я пытаюсь получить это в более читабельном формате …..
Так что я пробую следующее:

<?php
//load the logfile
$txt_file    = file_get_contents('test.txt');
$txtfile2 = preg_split( "/ ( |:) /", $txt_file );
$rows = explode("\n", $txtfile2[0]);

foreach($rows as $row => $data)
{
$row_data = explode(':', $data);$info[$row]['when']           = $row_data[0];
$info[$row]['name']         = $row_data[1];
$info[$row]['description']  = $row_data[2];//display data
echo ' WHEN: ' . $info[$row]['when'] . '<br />';
echo ' WHO: ' . $info[$row]['name'] . '<br />';
echo ' MESSAGE: ' . $info[$row]['description'] . '<br /><br />';

}
?>

Это работает частично ….
Когда выполнено, результат будет:

КОГДА: 31 дек. 2014 11
ВОЗ: 56 — Пользователь A
СООБЩЕНИЕ: Привет

КОГДА: 31 дек. 2014 11
ВОЗ: 56 — Пользователь B
СООБЩЕНИЕ: Привет тебе

Это близко к тому, что я хочу, но, как вы можете видеть, потому что я использую разделитель «:», это также сократит время и поместит минуты в кто.
Как я могу взорваться только на втором «:»?

Я надеюсь это имеет смысл?

0

Решение

Посмотрите, как это работает для вас

    <?php
$filename = "logfile.txt"; //data file to open
$fp = fopen( $filename, "r" ) or die("Couldn't open $filename");
while ( ! feof( $fp ) )
{
$line = fgets( $fp, 1024 );
$line_array = preg_split("/[:-]+/", $line);
$line_timestamp = $line_array[0] . ":" . $line_array[1];
$line_user = $line_array[2];
$line_message = $line_array[3];
echo ' WHEN: ' . $line_timestamp . '<br />';
echo ' WHO: ' . $line_user . '<br />';
echo ' MESSAGE: ' . $line_message . '<br /><br />';
}
?>
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector