[PHP-users 28861] Apacheのaccess.logから検索ワードを抽出して集計したい

k.kikuchi apple @ s21.fxis.fujixerox.co.jp
2006年 3月 28日 (火) 18:34:23 JST


はじめましてtomと申します。

自分のホームページに訪れてくださる方は、
どんなキーワードで検索しているのか気になって、
サーチワード集計を行いたいと思いました。

正規表現の知識ゼロにperlの知識も全くないため、
phpにて見よう見まねでコーディング中です。

しかし、ロジック自体が全くだめでうまく検索できません。
Apacheのaccess.log自体のフォーマットは以下の通りです。

検索ワードには半角・全角混在のスペースが含まれているため、
それを分割して検索部分の文字列のみを配列に格納するようにしたいです。


■ログフォーマット
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\""


■コード
-----------------------------------------------------------
<?php

$fp_in = fopen('access_log', 'r');
$fp_out = fopen('out.log', 'w');
$pattern =
 'http:\/\/www\.google\.co(.*)\/search\?(.*)$'.
 '(/[-.!~*\d\w;/?:@&=+$,%#]+)?';
while (!feof($fp_in)) {
 $data = fgets($fp_in, 65536);
if (ereg ( $pattern, $data, $url )) {
  $ary = split('&', $url[2]);
  foreach ($ary as $value) {
   fwrite($fp_out, $value);
  }
 }
}
echo $cnt;
fclose($fp_in);
fclose($fp_out);

?>
-----------------------------------------------------------

■Referer
"http://www.google.com/search?hl=ja&lr=lang_ja&ie=UTF-8&oe=UTF -8&q=検索
文字&num=XX"
"http://www.google.co.jp/search?hl=ja&lr=lang_ja&ie=UTF-8&oe= UTF-8&q=検
索文字&num=XX"


以上、よろしくお願いいたします。



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