• ベストアンサー

エンコードされた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です。 どなたか御存じの方いらっしゃいましたらご教授お願いします。

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

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

お礼

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