• ベストアンサー

URLを進数で表す方法

お世話になります。 掲示板などで、検索項目があると思います。 たとえば、テスト投稿という文字で検索した場合、http://○○.com/index.cgi?kensaku-koumoku=テスト投稿というURLになったとします。これをhttp://○○.com/index.cgi?kensaku-koumoku=%83e%83X%83g%93%8A%8DeなURLにしたいのです。 最初の検索の際は、上記のようになってくれるのですが、検索項目に当てはまる投稿が多い場合、次へというリンクがありそこにはkensaku-koumoku=テスト投稿となってしまいます。どのようにしたら、次へのリンクもkensaku-koumoku=%83e%83X%83g%93%8A%8Deのように出来るのでしょうか。 どなたか方法を教えていただけませんか。 宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
noname#25358
noname#25358
回答No.1

 俺が使ってる方法は、"?" よりも右側についてのみ、   $result =~ s/(\W)/'%'.unpack("H2", $1)/ego;  というURLで置き換えてしまう奴です。

hana43
質問者

お礼

ありがとうございます。 フォームデコードの際にうまくいくのかと思っていたのですが、変換してやる必要なあるようですね。 ほんと、助かりました。 ありがとうございました。

その他の回答 (1)

  • ralf124c
  • ベストアンサー率52% (232/446)
回答No.2

ANo.1の方と同じです。 よく使うのでSubルーチンライブラリとして入れてあるものを掲載します(式は昔、参考書から拝借しました)。 エンコードが目的のものです。 ついでにその逆も入れておきます。 ## URLエンコード sub URL_Encode{ my ($p01,@waste)=@_; $p01 =~ s/([^\w])/'%'.unpack('H2',$1)/eg; $p01 =~ tr/ /+/; return $p01; } ## URLデコード sub URL_Decode{ my ($p01,@waste)=@_; $p01 =~ tr/+/ /; $p01 =~ s/%([a-fA-F0-9]{2})/chr(hex($1))/ge; return $p01; }

hana43
質問者

お礼

ありがとうございました。 デコードも表記していただき、大変感謝しております。 私もよく使うので、ライブラリとして保存し、使ってみようと思います。 ほんとに、ありがとうございました。

関連するQ&A