Это все о поиске шаблонов в ваших файлах.В вашем примере это довольно просто:
[number]-[column name]=[value];
Основная проблема, которую я вижу, состоит в том, что у вас есть избыточная информация: номер столбца и сами столбцы, которые повторяются для каждой строки.Вы можете разобрать их, хотя.Это зависит от того, что вы ожидаете от своей программы: будет ли порядок столбцов всегда одинаковым?Всегда ли будут одни и те же столбцы?Как вы должны реагировать на неизвестные столбцы?
Вот краткий пример того, что вы можете сделать, используя регулярные выражения.В этом примере предполагается, что имена столбцов одинаковы, и вы хотите отобразить их все, и что они всегда будут в одинаковом порядке.Другими словами, я делаю это простым способом.
$data = array();
$lines = file("my/log/file.log");
// this will parse every line into an associative array, discarding the header number
foreach ($lines as $line)
{
// populate $matches with arrays where indices are as follows:
// 0: the whole string (0-Foo=bar;)
// 1: the column number (0)
// 2: the column name (Foo)
// 3: the value (Bar)
preg_match_all("/([0-9])-([^=]+)=([^;]+);/", $line, $matches, PREG_SET_ORDER);
$lineData = array();
foreach ($matches as $information)
$lineData[$information[2]] = $information[3];
$data[] = $lineData;
}
$keys = array_keys($data[0]); // you can also set this yourself
// for instance, $keys = array('MyServer', 'MyDataset'); would only display those two columns
echo '<table><tr>';
foreach ($keys as $column)
echo '<th>' . $column . '</th>';
echo '</tr>';
foreach ($data as $row)
{
echo '<tr>';
foreach ($keys as $column)
echo '<td>' . (isset($row[$column]) ? $row[$column] : '') . '</td>';
echo '</tr>';
}
echo '</table>';