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

Seto seto @ 1kg.jp
2006年 3月 29日 (水) 08:48:29 JST


 Setoです。

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

ならばなおのこと
最初からログを扱うのではなく
まず1行だけコピーしてきてスクリプト内に書き込んでおいて

$pattern = 'www.google.co';

$data = 'xxxxxxxxxxxxxxxxx';
if (ereg ( $pattern, $data, $url ))
    var_dump( $url );


その一行だけを解析テストしたほうがよいと思います。
その解析もいきなり結果を求めるのではなく
だんだん肉付けしていくようにする。
そうすれば期待通りの動作をしないとき
肉付けの前後でどの指定がまずいのか簡単に解ります。

補足ですがマニュアル
http://jp.php.net/manual/ja/function.ereg.php
にあるように
===============================================
注意:  Perl 互換の正規表現構文を使用する preg_match()  のほうが、多くの
場合 ereg() よりも速く動作します
===============================================
ということなのでループの中で使う場合は正規表現関数(Perl 互換)のほうが
良いようです。
またこちらの正規表現のほうがネット上にも資料が多いような気がします。
(Perlのが多いけどほとんど同じですから参考にはなるでしょう)

Junya Seto


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