Обработка файлов журнала с помощью регулярных выражений PHP - PullRequest
0 голосов
/ 18 июня 2011

Я просматриваю лог-файл, используя php, и он выглядит так:

11/06/05 09:17:59 TORMS068 11/06/05 09:17:59.234 TORMS068\Admin ... EPTH{2} ITEMIX{8} TELL{`` sdcsit49 - FileSystem /oracle/REF/sapdata2 Critical - MSGREC:1727:100 ``} USE{TELL} ATTACHMENT... xact{`NO`}

Где я использовал эллипсы, чтобы показать, что было много других вещей

ИЛИ как это

11/06/05 11:29:38 TORM ... H{3} ITEMIX{5} TELL{``marble: initiator SCSI ID now 7 } File={ /var/adm/messages } - MsgRec 5174:406``} USE{TELL} ATTACHMENT{} UserParms{}   AnswerWait{`10`} BaudRate{`1200`} C... eviceId{``} TellExact{`NO`}

Таким образом, либо следует USE {TELL} , либо File = {. *} Я хочу извлечь то, что находится в {} для TELL {} для каждой строки в файле журнала .. Пожалуйста, помогите мне, я схожу с ума LOL

Спасибо

Ответы [ 3 ]

0 голосов
/ 18 июня 2011

PHP * регулярное выражение документация довольно хорошо объясняет этот материал ...

<?php
$str = "11/06/05 11:29:38 TORM ... H{3} ITEMIX{5} TELL{``marble: initiator SCSI ID now 7 } File={ /var/adm/messages } - MsgRec 5174:406``} USE{TELL} ATTACHMENT{} UserParms{}   AnswerWait{`10`} BaudRate{`1200`} C... eviceId{``} TellExact{`NO`}";
$pat = '/TELL{(``.*``)}/';
preg_match($pat,$str,$matches);
print_r($matches);
?>
0 голосов
/ 08 июля 2011

Ну, я не мог найти надежный метод для работы, но в итоге я получил

if (preg_match("/(TELL{)(.*)} (USE{T)/iU ",$data,$matches)) 
    $rowMsg=substr($matches[0],5,-7);
$rowMsg=preg_replace("/[}\. ]{1}\$/",'',$rowMsg);
0 голосов
/ 18 июня 2011
if (preg_match("/USE\{(?<insideTheBrackets>[^\}]+)\}/", $line, $pat)) {
    var_dump($pat['insideTheBrackets']);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...