人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

phpのfile_get_contentsで、
空白を含むURLの取得がうまくいきません。

浜崎 あゆみ

とかを、utf8にして、urlencodeして、file_get_contentsしているのですが、

failed to open stream: HTTP request failed! HTTP/1.1 400 Bad Request

が返ってきます。
空白が無いワードだと一応取得できるのですが・・・。

空白もurlencode、またはrawurlencodeしているのですが、何故かうまくいきません。

何か解決に向けて、アドバイス頂けると助かります。

●質問者: onigirin
●カテゴリ:ウェブ制作
✍キーワード:HTTP open PHP Stream あゆみ
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● ManalTencho
●18ポイント

urlencode() の代わりに rawurlencode() ではダメでしょうか?

◎質問者からの返答

どうもありがとうございます。

質問文にも書きましたが、両方ともうまくいかないです。


2 ● Yota
●52ポイント

浜崎 あゆみ(姓名の間にスペース)

%E6%B5%9C%E5%B4%8E+%E3%81%82%E3%82%86%E3%81%BF(urlencode)

%E6%B5%9C%E5%B4%8E%20%E3%81%82%E3%82%86%E3%81%BF(rawurlencode)

わたしのサーバでは下のほうなら、file_get_contents()できます。

まずは、ブラウザからそのファイルにアクセスしてみてください。

http://localhost/%E6%B5%9C%E5%B4%8E%20%E3%81%82%E3%82%86%E3%81%B...

それと、URLが違うなら404 Not Foundが返ってくるはずですが、

400 Bad Request

というのはなぜかと考えるのですが、サーバApacheであるとして、access_logにGETリクエストでどんなURLを呼んでいるか見てみてください。

◎質問者からの返答

どうもありがとうございます。

質問文に書き忘れていましたが、

ヤフー等の検索結果を取得しています。

一応、

http://search.yahoo.co.jp/bin/search?p=%E6%B5%9C%E5%B4%8E%20%E3%...

をブラウザに入れると検索結果は表示されますが、

file_get_contentsできなくて、

Bad Requestがよくわからないです・・・。

生ログ見ましたが、get?url=上記のURL

で普通にリクエストされていました。

ブラウザにURLを表示しようとしたところ、

shift_jisで出力しているのでエンコード部分が文字化け、文字コードをshift-jisにして読み直すと、日本語になってしまっていました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ