[PHP-users 33295] Re: ログの区切りかた

egis @ csc.jp egis @ csc.jp
2008年 2月 18日 (月) 03:17:14 JST


どーもイワセといいます。

やってみました。参考にしてください。

$lines = array(
  '[22:01:00]: SEARCH: 192.168.1.1 (WebAgent): KEY WORDS "弱肉強食" ID
"00000000" "00" VERSION "taka table" "1.54" (4 results)',
  '[22:02:00]: SEARCH: 192.168.1.2 (WebAgent): KEY WORDS "弱肉" KEY
WORDS "強食" ID "00000000" "00" VERSION "taka table" "1.54" (5 results)',
  '[22:03:00]: SEARCH: 192.168.1.3 (WebAgent): KEY WORDS "弱肉" KEY
WORDS "強食" KEY WORDS "ことわざ" ID "00000000" "00" VERSION "taka
table" "1.54" (2 results)'
);
$pattern = "/\[([0-9]{2}:[0-9]{2}:[0-9]{2})\]: SEARCH:
([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}) \((.*)\): (KEY WORDS
.+)ID.+\(([0-9]+) results\)/";
foreach ($lines as $line) {
  preg_match($pattern, $line, $matches);
  $keywords = str_replace("KEY WORDS ", "", $matches[4]);
  echo "{$matches[1]} [検索]:{$matches[2]}({$matches[3]})
$keywords({$matches[5]}Hit)\n";
}

--- output ---
22:01:00 [検索]:192.168.1.1(WebAgent) "弱肉強食" (4Hit)
22:02:00 [検索]:192.168.1.2(WebAgent) "弱肉" "強食" (5Hit)
22:03:00 [検索]:192.168.1.3(WebAgent) "弱肉" "強食" "ことわざ" (2Hit)

※「"」が検索語に含まれる場合どのようにログに記録されるか不明なので
 検索語は「"」で囲ったままにしました。



PHP-users メーリングリストの案内