• ベストアンサー

WEBページのソースを取得する方法

一つのPHPファイルの処理の中で任意のWEBページにアクセスして結果を取得することはどのようにして実現できるのでしょうか? アクセスする際にpostでデータを送りたいです。 環境 php3.4.11 apache 2.0

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

  • ベストアンサー
回答No.2

POSTでデータを送りたい場合はfsockopenを使うのが普通かな?と思います。 ------------------------------------------------------------- <?php $path = "/kotaeru_reply.php3"; $host = "okwave.jp"; $postData[] = urlencode("a") . "=" . urlencode("A"); $postData[] = urlencode("b") . "=" . urlencode("B"); $postData[] = urlencode("c") . "=" . urlencode("C"); $queryData = join("&",$postData); $length = strlen($queryData); $header[] = "POST {$path} HTTP/1.0"; $header[] = "Accept: */*"; $header[] = "Accept-Language: ja"; $header[] = "Content-type: application/x-www-form-urlencoded"; $header[] = "Connection: Keep-Alive"; $header[] = "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"; $header[] = "Host: {$host}"; $header[] = "Content-Length: {$length}"; $header = join("\n",$header); $request = "{$header}\n\n{$queryData}\n\n"; $fp = fsockopen($host,80); fputs($fp,$request); while($tmpData = fgets($fp,4096)){ $getData .= $tmpData; } fclose($fp); list($head,$body) = preg_split("/\\\n\\\n/",$getData,2); echo $body; ?> ----------------------------------------------------------- こんな感じでしょうか。 #pearにHTTP::Requestというモジュールがあって、それが結構使われるようです。

nicname
質問者

お礼

ありがとうございます。 助かりました。

その他の回答 (1)

  • briant-jr
  • ベストアンサー率50% (5/10)
回答No.1

本質的な回答になっていないかもしれませんが、 POSTでデータを送るのではなく、PHPファイルの中で include("***.php"); というように任意のWEBページをincludeし、処理を行うようにするのはどうでしょうか? その場合includeされたファイルでinnclude文を書いたPHP内の変数がそのまま使えますし、include文を書いたファイルで処理後のincludeされたファイル内の変数がそのまま使えます。 ただし、includeはその場所に指定されたWEBページをそのまま展開してしまうので、処理用のファイルにprintやecho文、HTMLタグなど(ブラウザでソースを表示した際に見えるものすべて)を書いているとこれらが出力されてしまい、レイアウトが崩れてしまうと思われます。 この方法を使う場合は、処理部分である別ファイルでは何も出力しないようにしておく必要があると思います。