• ベストアンサー

エンコードされたURLをGETメソッドで受け取るには?

ttp://localhost/urltest.php?url=ttp://search.auctions.yahoo.co.jp/jp/search/auc?p=%A5%AC%A5%E4%A5%EB%A5%C9&auccat=0&alocale=0jp&acc=jp 上記のURLで ttp://localhost/urltest.phpの if(isset($_GET['url'])){ $itemsStr = ($_GET['url']); } print $itemsStr; で受け取りたいのですが、 ttp://search.auctions.yahoo.co.jp/jp/search/auc?p= までしか取得できません。 %A5%AC%A5%E4%A5%EB%A5%C9 の部分が取り出せないようです。%Aだけを受けとることはできるのですが、それ以上長くエンコードされた文字を受け取ろうとすると ttp://search.auctions.yahoo.co.jp/jp/search/auc?p= までしか受け取れません。 他のエンコードを含んだURLも同様でした。 記述したURLは頭のhを取っているので注意してください。省略されてしまうので。 php5.1.4です。 どなたか御存じの方いらっしゃいましたらご教授お願いします。

  • PHP
  • 回答数2
  • ありがとう数2

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

  • ベストアンサー
  • asock
  • ベストアンサー率70% (7/10)
回答No.2

質問者様が期待された動作をしないのは、 ttp://localhost/urltest.php?url=ttp://search.auctions.yahoo.co.jp/jp/search/auc?p=%A5%AC%A5%E4%A5%EB%A5%C9&auccat=0&alocale=0jp&acc=jp この ?url=ほにゃらら の、ほにゃらら部分がエンコードされていないからではないかと思います。本来は、 "ttp://localhost/urltest.php?url=" . urlencode("ttp://search.auctions.yahoo.co.jp/jp/search/auc?p=%A5%AC%A5%E4%A5%EB%A5%C9&auccat=0&alocale=0jp&acc=jp") つまり ttp://localhost/aaa.php?url=ttp%3A%2F%2Fsearch.auctions.yahoo.co.jp%2Fjp%2Fsearch%2Fauc%3Fp%3D%25A5%25AC%25A5%25E4%25A5%25EB%25A5%25C9%26auccat%3D0%26alocale%3D0jp%26acc%3Djp がちゃんとエンコードされたURLです。 結果、$_GET['url']には ttp://search.auctions.yahoo.co.jp/jp/search/auc?p=%A5%AC%A5%E4%A5%EB%A5%C9&auccat=0&alocale=0jp&acc=jp が格納されます

enta_2006
質問者

お礼

書いていただいた通りに処理したらいきました。ありがとうございます! 助かりました!

その他の回答 (1)

回答No.1

PHPというよりHTMLの書き方の問題ですね。 ttp://localhost/urltest.php?url=[URLエンコードした値] にして下さい。 つまり、以下のようにリンクをはる必要があります。 <a href="ttp://localhost/urltest.php?url=ttp%3A%2F%2Fsearch.auctions.yahoo.co.jp%2Fjp%2Fsearch%2Fauc%3Fp%3D%25A5%25AC%25A5%25E4%25A5%25EB%25A5%25C9%26auccat%3D0%26alocale%3D0jp%26acc%3Djp">hogehoge</a>

enta_2006
質問者

お礼

エンコードをしたほうがいいのですね。ありがとうございます! 助かりました!

関連するQ&A

  • ■URLのエンコードについて

    ■URLのエンコードについて お世話になります。 ■URLのエンコードについて 下記PHPで書いてありますが、google、Firefoxでは正しく移動(表示)できますが IEでは正しく表示できません。 $body .= "<A href='search.php?maker=$col[maker]'>" . substr($col[maker], 0, 50) ."</A> " . "($col[cnt]件)"; 文字コードはEUC-JPですが IEでもできるように教えていただけないでしょうか? 大変困っております。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • urlにエンコードしたい。

    urlにエンコードしたい。 まったくの初心者で見よう見まねでやっています。下記を実行したのですが、 while ($col = mysql_fetch_array($rst)) { $body .= "<LI><A href='search.php?comment1=$col[comment1]'> $col[comment1]</A> " . "($col[cnt]件)"; } http://**.**.**/search.php?comment1= ほげほげ になってうまくいきません。 この ほげほげを%A4%DB%A4%B2%A4%DB%A4%B2のようにするには いろいろググってurlencodeをすれば良いのかな?と思い、いろいろ試しましたが うまくいきませんでした。上の文に何を足せば、どう書けばうまくいくのでしょうか? それとも何か違う方法があるのでしょうか? ご存知の方ご教授よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • header関数で遷移した際のURLエンコード

    こんにちは。 XOOPSを利用しております。 ログイン画面を表示する際にSSL化したいため、PHPのheader関数を利用してSSLページを表示させることをしております。 その場合に、ログイン後のリダイレクトするページを保存するために、「xoops_redirect="リダイレクト先URL"」という変数をURLに埋め込んでおります。 そこで解決できない問題があります。 header()使用時には、xoops_redirectの値をURLエンコードして以下のように送っております。 header(Location: https://localhost/xoops/user.php? xoops_redirect=%2Fxoops%2Fmodules%2Fcs%2Fsearch.php%3Fcid%3D1%26aid%3D1);" しかし、表示されるURLを見ると以下のようにxoops_redirectの値がURLエンコードされておりません。 https://localhost/xoops/user.php? xoops_redirect=/xoops/modules/cs/search.php?cid=1&aid=1 よって、$_GET['xoops_redirect']で値を取得すると、"/xoops/modules/cs/search.php?cid=1"という部分のみしか取得できません。 何か分かることがありましたら教えてほしいです。 別の解決方法でもぜんぜんかまいません。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • URLエンコーディングで悩んでいます。

    関係者のみのページから特定のページにリンクさせる際に ダミーのリファーを飛ばしてリンクするシステムを作っています。 link.php の内容(EUC) <? $url = $_GET['url']; ?> <meta http-equiv="Content-Type" content="text/html; charset=euc-jp"> <html> <body> 下のURLへリンクします。よろしければクリックしてください。<BR> <a href="<? echo $url; ?>"><? echo $url; ?></a> </body> </html> このスクリプトを引数url http://search.yahoo.co.jp/search?p=%E4%BB%8A%E6%97%A5%E3%81%AF%E8%89%AF%E3%81%84%E5%A4%A9%E6%B0%97&fr=top&src=top (URLエンコードされた文字列)を与えて起動すると URLエンコードされた部分が文字化けしてしまいます。 渡された引数をそっくりそのまま表示し文字化けさせずに表示させることはできないのでしょうか。

    • ベストアンサー
    • PHP
  • オークションで出品されてる情報について

    オークションで金儲けの情報を出品しているのを見かけました。いったい何なんでしょうか、信用できる情報なんでしょうか?http://search.auctions.yahoo.co.jp/jp/search/auc?p=%B6%E2%CC%D9%A4%B1&auccat=0&alocale=0jp&acc=jp

  • バイク用ヘルメットを探しています。

    バイク用のヘルメットを探しているのですが、なかなか気に入ったのが見つからずヤフオクを見たところドンピシャ!のがありました。 AVEXというメーカーの「ドラゴン」という商品です。 ttp://search1.auctions.yahoo.co.jp/jp/search/auc?p=AVEX%A1%A1%A5%C9%A5%E9%A5%B4%A5%F3%A1%A1&auccat=2084012444&alocale=0jp&acc=jp しかしこの商品、安全規格も付いていない製品でした・・。 よく見るとクオリティも粗悪で送料2800円・・。 どなたかこのドラゴンのような「スッ」と下が尖ったクールなジェットヘルメットをご存知ないでしょうか。 よろしくお願いします。

  • ウィルスバスターについて

    昨年新しいPC購入して今は無料期間中のウィルスバスターなのですが、 期限が切れるので購入しようと思いますが、安上がりな方法はどのような事が一番いいでしょうか? またXP用のときは年に1回リカバリーすると 再度、ウィルスバスターをインストールできたのですが、オークションで売られているものでも、同じことが可能でしょうか? http://search.auctions.yahoo.co.jp/jp/search/auc?p=%A5%A6%A5%A3%A5%EB%A5%B9%A5%D0%A5%B9%A5%BF%A1%BC&auccat=0&alocale=0jp&acc=jp

  • 一般的な方法で『URLエンコード』ができません・・・

    よろしくお願いいたします。 テキストボックスに入力(「こんにちは」など)した値をもとに、Yahooで検索させたいのですが、以下の方法でエンコードしました。 sub url_encode($) { my $str = shift; $str =~ s/([^\w ])/'%'.unpack('H2', $1)/eg; $str =~ tr/ /+/; return $str; } そうしたところ、「/」や「:」も別の文字「%2f」「%3a」に変換されてしまい、Yahooのページが開きません。 ちなみにYahooで「こんにちは」と検索すると、URLが以下のようになります。 http://search.yahoo.co.jp/search?p=%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF&ei=UTF-8&fr=top_v2&x=wrt&meta=vc%3D テキストボックスに「こんにちは」と入力すして検索ボタンをクリックすると、上記のように変換させたいのです。 どのようにしてエンコードしたらよろしいのでしょうか。 よろしくお願いいたします。

    • ベストアンサー
    • Perl
  • 対応メモリの見方

    PC2700 のメモリに対応したメモリですよ。 といわれたのですが PC2700のメモリならどこの会社のでもいいのでしょうか? オークションで購入したいので。。 http://search3.auctions.yahoo.co.jp/jp/search/auc?p=PC2700&auccat=23372&alocale=0jp&acc=jp

  • なんでオークションは安く売れるのですか?

    旅行カバンを検索したら、 http://search.auctions.yahoo.co.jp/jp/search/auc?p=%A5%B9%A1%BC%A5%C4%A5%B1%A1%BC%A5%B9&auccat=0&alocale=0jp&acc=jp みたいに3分の1以下の値段の旅行カバンが検索できました。ほぼ新品らしいです。何でこんなに安いのですか?買ってだまされることはありえますか?

専門家に質問してみよう