ホームページ  >  記事  >  バックエンド開発  >  リモートファイルを読み取るPHP関数

リモートファイルを読み取るPHP関数

WBOY
WBOYオリジナル
2016-07-25 08:43:531006ブラウズ

    function urlfopen($url, $limit = 0, $post = '', $cookie = '', $bysocket = FALSE , $ip = ' ', $timeout = 15, $block = TRUE, $encodetype = 'URLENCODE') {
  1. $return = '';
  2. $matches = parse_url($url);
  3. $host = $matches['host'];
  4. $path = $matches['path'] ? $matches['path'].(isset($matches['query']) ? '?'.$matches['query'] : '') : '/';
  5. $port = !empty($matches[ 'ポート']) ? $matches['port'] : 80;
  6. if($post) {
  7. $out = "POST $path HTTP/1.0rn";
  8. $out .= "Accept: */*rn";
  9. $out . = "Accept-Language: zh-cnrn";
  10. $boundary = $encodetype == 'URLENCODE' ? '' : ';'.substr($post, 0, トリム(strpos($post, "n")));
  11. $out .= $encodetype == 'URLENCODE' ? "Content-Type: application/x-www-form-urlencodedrn" : "Content-Type: multipart/form-data$boundaryrn";
  12. $out .= "ユーザーエージェント: $_SERVER[HTTP_USER_AGENT]rn";
  13. $ out .= "ホスト: $hostrn";
  14. $out .= 'Content-Length: '.strlen($post)."rn";
  15. $out .= "接続: Closern";
  16. $out .= "キャッシュ-Control: no-cachern";
  17. $out .= "Cookie: $cookiernrn";
  18. $out .= $post;
  19. } else {
  20. $out = "GET $path HTTP/1.0rn";
  21. $out . = "受け入れ: */*rn";
  22. $out .= "受け入れ言語: zh-cnrn";
  23. $out .= "ユーザーエージェント: $_SERVER[HTTP_USER_AGENT]rn";
  24. $out .= "ホスト: $hostrn";
  25. $out .= "リファラー: rn";
  26. $out .= "接続: Closern";
  27. $out .= "Cookie: $cookiernrn";
  28. }
  29. $fp = @fsockopen(($ ip ? $ip : $host), $port, $errno, $errstr, $timeout);
  30. if(!$fp) {
  31. return '';
  32. } else {
  33. stream_set_blocking($fp, $block);
  34. stream_set_timeout($fp, $timeout);
  35. @fwrite($fp, $out);
  36. $status = stream_get_meta_data($fp);
  37. if(!$status['timed_out']) {
  38. while (!feof($) fp)) {
  39. if(($header = @fgets($fp)) && ($header == "rn" || $header == "n")) {
  40. Break;
  41. }
  42. }
  43. $stop = false;
  44. while(!feof($fp) && !$stop) {
  45. $data = fread($fp, ($制限 == 0 || $limit > 8192 : $limit));
  46. $return .= $data;
  47. if($limit) {
  48. $limit -= strlen($data);
  49. $stop = $ limit }
  50. }
  51. }
  52. @fclose($fp);
  53. return $return;
  54. }
  55. }
复制代

PHP

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。