ex_file_get_contents を作ったので。。

前のエントリーで書いてた fsockopen のソースがひどいやつだったので
ちゃんと動くように修正したので、一応。

最初strippos使ってたんだけど、php4じゃ動かないから書き直したりして
結局php4でも動くように。

ちなみに
ヘッダーからゴソっともってきてるので、
html部分に出すのはワンクッションおいてください。

https とか ssl はめんどくさくて非対応w

/**
* ex_file_get_contents:file_get_contentsの代替バージョン。
*
* @author jakk
* @copyright 2008/04/25 neoinspirations
* @param string $server 形式のURL
* @param int $timeout タイムアウト秒数
* @return 成功した場合 $urlのhtmlデータをstringで返す 失敗した場合 false

Ex.
$html = ex_file_get_contents($url);

*/
function ex_file_get_contents($uri=”,$timeout=10){
if (!empty($uri)) {
$uri = strtr($uri,array(“http://”=>””));
$domain = strpos(strtolower($uri),strtolower(‘/’),3);

if ($domain !== false) {
$server = substr($uri, 0, $domain);
$file = substr($uri, $domain);
} else {
$server = $uri;
$file = “/”;
}

$fp = @fsockopen($server, 80,$errno, $errstr, $timeout);
if ($fp) {
$out = “GET ” . $file . ” HTTP/1.1\r\n”;
$out .= “Host: ” . $server . “\r\n”;
$out .= “Connection: Close\r\n\r\n”;

@fwrite($fp, $out);

$data = ”;
while ($eofCheck=@fgets($fp,1024)) {
$data .= $eofCheck;
}
@fclose($fp);
} else {
return false;
}
} else {
return false;
}
return $data;
}

Leave a Reply