Alternativ till file get contents

Om man har sin hemsida på en UNIX server kan man med fördel använda sig av cURL som beskrivs här. För dem som använder Windows men ändå behöver möjligheten att inkludera filer från en annan server så har vi tagit fram ett alternativ som du kan ladda ner här. Du hittar den även nedan:

function file_get_url_contents($url) {
   if (preg_match('/^([a-z]+)://([a-z0-9-.]+)(/.*$)/i', 
     $url, $matches)) {
      $protocol = strtolower($matches[1]);
      $host = $matches[2];
      $path = $matches[3];
   } else {
      // Bad url-format
      return FALSE;
   }

   if ($protocol == "http") {
      $socket = fsockopen($host, 80);
   } else {
      // Bad protocol
      return FALSE;
   }

   if (!$socket) {
      // Error creating socket
      return FALSE;
   }

   $request = "GET $path HTTP/1.0rnHost: $hostrnrn";
   $len_written = fwrite($socket, $request);

   if ($len_written === FALSE || $len_written != strlen($request)) {
      // Error sending request
      return FALSE;
   }

   $response = "";
   while (!feof($socket) &&
         ($buf = fread($socket, 4096)) !== FALSE) {
      $response .= $buf;
   }

   if ($buf === FALSE) {
      // Error reading response
      return FALSE;
   }

   $end_of_header = strpos($response, "rnrn");
   return substr($response, $end_of_header + 4);
}

Denna funktion anropas på följande sätt (byt ut http://www.loopia.se/ med den adress du vill hämta):

$url = "http://www.loopia.se/";
$res = file_get_url_contents($url);
if ($res === FALSE) {
   echo "Error fetching $url";
} else {
   echo $res;
}

Hjälpte denna guide dig?

Relaterade guider