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

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


どーもイワセです。

自動改行で複数行になってしまった箇所がありますが、パターン部分だけは
影響を受けないように修正しました。

> $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\)/";

$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\)/";

> どーもイワセといいます。
> 
> やってみました。参考にしてください。
> 
> $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 メーリングリストの案内