• ベストアンサー

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のように出来るのでしょうか。 どなたか方法を教えていただけませんか。 宜しくお願いします。

  • hana43
  • お礼率49% (105/212)
  • Perl
  • 回答数2
  • ありがとう数2

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

  • ベストアンサー
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

  • 自CGIのURLのパス部分を取得する方法

    CGIのURLが http://example.com/test/test.cgi だったとして、自身のURLのパス部分(http://example.com/test/)を出すには どのようにしたらいいでしょうか。 CGIモジュールでURLを取得して 最後の/まで切り取る方法もあるかと思いますが そのURLを取得するのと同じくらい、スマート?に出来ないでしょうか。 アドバイスのほどよろしく御願いします。

    • ベストアンサー
    • Perl
  • 静的URL変換について

    現在,phpでウェブサイトを作成しているのですが、 サイト内検索をしたときのURLを静的化できないか、考えております 例)getで送った際のURL hoge.com/search.php?keyword=hoge 修正後 hoge.com/kewyword_hoge.php そして、その際にやりたいことは、hoge.com/kewyword_hoge.phpをインデックスさせ このURLのページにアクセスしてきたときにhoge.com/search.php?keyword=hogeを 実行するようにしたいのですが、これって可能でしょうか? 静的URL変換自体は問題ないのですが、 hoge.com/kewyword_hoge.phpにアクセスしてもhoge.com/search.php?keyword=hoge を実行してくれず困っております。 恐れ入りますが、解決策をご教授いただけませんでしょうか? 何卒宜しくお願いします。 また、私のやりたいことは以下のサイトで参考になります。 ■インデックスされているURL(google) http://j-sen.jp/kanto/keyword_%E3%81%86%E3%81%A9%E3%82%93.htm ■サイト内検索のURL http://j-sen.jp/search/?area=kanto&nmin%5Bname%5D=&nmin%5Btime%5D=&nmin%5Bn%5D=&wage=&freeword=%E3%81%86%E3%81%A9%E3%82%93&day=&hour=&feature%5B%5D=&feature%5B%5D=&medical=1&except_medical=0&x=82&y=22 どちらも検索結果は同じですが、サイト内検索のURLを静的化し、 google先生にインデックスさせています。 お手数ですが、改めて解決策のご教授お願い申し上げます。

    • 締切済み
    • PHP
  • CGIフォームにURL内の値を引き継ぐ方法

    超初心者です。 あるページ(P1)から「エントリー」ボタンをクリックさせて、 フォームページ(P2)を開かせるところまではできました。 P1:http://www.test.com/index.cgi?id=12345   ↓「エントリー」ボタンをクリック P2:http://www.test.com/entry.html?EntryNo=12345 ところが、URLにある値「12345」をフォーム内に入れ込むことができません。 どなたか助けていただける方はいませんでしょうか? http://www.test.com/entry.html?EntryNo=12345 のform部分は↓です。 <form method="POST" action="entry.cgi"> <input type="text" name="EntryNo" size="14" value=""> フォーム内に表示させなくても、フォーム送信の際にこの値「12345」が送られるだけでも良いです。 よろしくお願いします。

    • ベストアンサー
    • CGI
  • www.URL 付のcgi を動かす

    URL付のcgi を動かすにはどうしたらいいのでしょう。 つまり2つの独立したサーバーがあり、お互いに 呼び出して実行したい場合、同一サーバーなら通常、 $test= 'home/public_html/cgi/test.cgi'; open (test); print while <test>; ちょっとまどろっこしいんですが、このように実行 できるかと思うんです。 しかし、別のサーバーにあるとこうはかけません。 したがって1行目を $test= 'http://test.com/cgi/test.cgi'; ・・・と書きたいところなのですが、どうもうまく 実行されないようです。 何かいい解決策があれば教えてください。

    • ベストアンサー
    • Perl
  • htaccessで静的URLを動的URLに書き換え

    SEO対策としてcgiで動的に表示されるページを静的なURLで記載したいと思っております。 htaccessを使えば可能なようですが、http://www.aaa.com/tokyo/sibuyaのURLでhttp://www.aaa.com/cgi-bin/test/search.cgi?pref=tokyo&city=sibuyaを実行するにはどのように記載したらよいのでしょうか。 *tokyo,sibuyaの部分には任意の都道府県、都市名を入れたいです

  • URL転送で、クリック数をカウント出来ませんか?

    メルマガにURLを載せたいのですが、その際、どれだけクリックされたか数えたいのです。 例えばwww.goo.ne.jp/aaa/bbb/ccc/ddd.htm にリンクさせたいと思います。 「URL転送」で探したら、これを短く、 www.aaa.com/aaa などのようにして、無料でURL転送してくれるサイトはありました。 でも何クリックしたかカウントまでわかるところが見つかりません。 難しいCGIなど駆使せずに、簡単に出来るサイトはないでしょうか? (出来れば無料で。)

  • URLのindex.htmlのある なしについて

    ホームページ作成しているのですが今あることが気になって質問させてもらいました。 たとえば私のホームページのURLが http://xxxx.test.jp/だとすると http://xxxx.test.jp/index.htmlでも同じく表示されてしまいます。 調べたらそれは別のURLと検索エンジンにて認識されてしまうので統一した方がいいのではと思い index.htmlなしに統一しようと思い RewriteEngine on RewriteCond %{THE_REQUEST} ^.*/index.html RewriteRule ^(.*)index.html$ http://xxxx.test.jp /$1 [R=301,L] にて .htaccessファイルを作成しました。 多分それでindex.htmlなしに統一できたと思うのですが、次に問題が発生しました。 今度は、 http://xxxx.test.jp/ では正常に表示されるのですが、 http://xxxx.test.jp/index.html では ページが表示されなくなりました。 実際 http://xxxx.test.jp/index.html でお気に入りに入れている方やリンクを張っている方もいるので http://xxxx.test.jp/index.html でURLを入れたら自動で http://xxxx.test.jp/ に変換することはできるのでしょうか? たとえば 以下のサイト http://www.javadrive.jp/ みたいに http://www.javadrive.jp/ でも http://www.javadrive.jp/index.html でも表示できるようにしたいのですが アドバイスお願いします。

    • ベストアンサー
    • HTML
  • 存在するURLのデータのみダウンロードする方法

    あるリンクからデータをダウンロードしたいのですが、存在するURLのデータのみダウンロードするための識別が上手くいきません。何か良い方法は無いでしょうか。 if test -e "http://test"; then curl -O "http://test" fi (URLは適当です)

  • 存在するURLのデータのみ保存する方法

    あるリンクからデータをダウンロードしたいのですが、存在するURLのデータのみダウンロードするための識別が上手くいきません。何か良い方法は無いでしょうか。 if test -e "http://test"; then curl -O "http://test" fi (URLは適当です)

  • PerlでCGIを書いておりますが、特定のURL(ディレクトリ)の位置データを取得するには?

    PerlでCGIを書いております。 http://test.com/a/test/index.cgiにアクセスしているときに、perlがaを取得して、http://test.com/b/test/index.cgiにアクセスしているときbを取得する良い方法は有るのでしょうか?WindowsとLinuxの両方で動作できれるものがあれば宜しくお願いします。 WindowsとLinuxではディレクトリの感じが違うようなので1個の方法で実現できれば助かります。

    • 締切済み
    • CGI

専門家に質問してみよう