- ベストアンサー
アクセス解析でキーワードだけ取得したい
Perlでアクセス解析をしています。 閲覧者がどこから飛んできたのかわかるのですが、下記の様なアドレスで返ってくるので「何ていうキーワード」で引っかかったのか分かりません。 http://search.yahoo.co.jp/bin/search?p=%A5%C6%A5%B9%A5%C8&fr=top&src=top アドレスをブラウザに放り込んでやれば分かるのですが... 上記アドレスから「%A5%C6%A5%B9%A5%C8」を抜き出す方法はあるのでしょうか? ※ search.yahooに特化した話で構いません。 是非、ご教授下さいm(__)m
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
この問題を解決するには jcode.pl のほかに Unicode の変換ツールが必要です。 俺のプログラムの場合、下記のロジックでやってます。 $referer の内容をシフトJISに変換するものです。 Unicode 変換ツールは simaguni.pl を使用していますが、これは参考URLのところから取得してください。 require 'jcode.pl'; if($referer =~ /%[eE][0-9a-fA-F]{1}%[0-9a-fA-F]{2}%[0-9a-fA-F]{2}%[eE][0-9a-fA-F]{1}%[0-9a-fA-F]{2}%[0-9a-fA-F]{2}/){ require './simaguni.pl'; if(&simaguni'loadbook8()){ ;# 'euc' 'sjis' 'jis' の何れかを指定 &simaguni'decode8(*referer,'sjis'); &simaguni'unloadbook8(); } }else{ $referer =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C",hex($1))/eg; &jcode'convert(*referer,"sjis"); }
その他の回答 (1)
- omni2
- ベストアンサー率53% (33/62)
↓こういうのでどうでしょうか?? use Jcode; my $url = 'http://search.yahoo.co.jp/bin/search?p=%A5%C6%A5%B9%A5%C8&fr=top&src=top'; $url =~ /p=(.*?)&/i; print $1; print "\n"; my $data = $1; $data =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg; $data = Jcode->new($data)->sjis; print $data;
お礼
返事遅くなりすみませんm(__)m 当サーバでは「use Jcode;」でエラーが出てしまいましたが、勉強して置き換えてみます。 ありがとうございました。
お礼
返事遅くなりすみませんm(__)m 「simaguni.pl」を利用させて頂きます。 ありがとうございました。