[PHP-users 28902] Re: 正規表現による文字列の抽出

k.kikuchi apple @ s21.fxis.fujixerox.co.jp
2006年 3月 29日 (水) 18:17:42 JST


矢地さま

度々ありがとうございます、tomです。

> ちなみに私なら、logをparseする時点で、
> <?php
> $line = 'XXX.XXX.XXX.XXX - - [時間] "GET コンテンツ HTTP/1.0" 200
99999
"http://www.google.co.jp/search?hl=ja&q=%82%a0%82%a0%20%82%a0%82%a0%81%40%82%a0&lr="
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;)"';
> $pattern = '/^(\S+) (\S+) (\S+) \[(.*)\] "(.*?)" (\d+) (\d+) "(.*?)"
"(.*?)"$/';
> if (preg_match($pattern, $line, $matches)) {
> print_r($matches);
> }
> ?>
> として、最初から「"」が含まれないようにREFERERを抜き出します。
> そうしてからparse_url()を使うか、自力でゴリゴリ実装すると思います。
> 正規表現一発にしないで、無理せず、あせらず、ゆっくり、順番に。
> # ちょっと上のコードは動くか怪しいですけど・・・
>
> そのうちURL毎に集計したい気分になるかもしれませんし^^
> ご参考まで。
>

パフォーマンスを見つつ、
正規表現を使う方法と使わない方法の、
どちらが良いか判断しようと思います。

正規表現を覚えたい反面、
苦手意識で全く手を付けなかったので、
これを機会に色々と勉強してみようと思います。

ありがとうございました。

結果は後ほどご連絡いたします。




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