- ベストアンサー
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のように出来るのでしょうか。 どなたか方法を教えていただけませんか。 宜しくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
俺が使ってる方法は、"?" よりも右側についてのみ、 $result =~ s/(\W)/'%'.unpack("H2", $1)/ego; というURLで置き換えてしまう奴です。
その他の回答 (1)
- ralf124c
- ベストアンサー率52% (232/446)
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; }
お礼
ありがとうございました。 デコードも表記していただき、大変感謝しております。 私もよく使うので、ライブラリとして保存し、使ってみようと思います。 ほんとに、ありがとうございました。
お礼
ありがとうございます。 フォームデコードの際にうまくいくのかと思っていたのですが、変換してやる必要なあるようですね。 ほんと、助かりました。 ありがとうございました。