重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

Perlでアクセス解析をしています。
閲覧者がどこから飛んできたのかわかるのですが、下記の様なアドレスで返ってくるので「何ていうキーワード」で引っかかったのか分かりません。

http://search.yahoo.co.jp/bin/search?p=%A5%C6%A5 …

アドレスをブラウザに放り込んでやれば分かるのですが...
上記アドレスから「%A5%C6%A5%B9%A5%C8」を抜き出す方法はあるのでしょうか?
※ search.yahooに特化した話で構いません。

是非、ご教授下さいm(__)m

A 回答 (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");
}

参考URL:http://www2.famille.ne.jp/~akio1998/simaguni.html
    • good
    • 0
この回答へのお礼

返事遅くなりすみませんm(__)m
「simaguni.pl」を利用させて頂きます。
ありがとうございました。

お礼日時:2005/09/10 02:40

↓こういうのでどうでしょうか??



use Jcode;
my $url = 'http://search.yahoo.co.jp/bin/search?p=%A5%C6%A5 …
$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;
    • good
    • 0
この回答へのお礼

返事遅くなりすみませんm(__)m
当サーバでは「use Jcode;」でエラーが出てしまいましたが、勉強して置き換えてみます。
ありがとうございました。

お礼日時:2005/09/10 02:27

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!