わかりやすいように、「file_get_contents」を「curl_get_contents」に置き換えればOKなように代替の関数を作成しておくと便利かと思います。
<?php
function curl_get_contents($url, $timeout = 30){
$ch = curl_init();
curl_setopt( $ch, CURLOPT_URL, $url );
curl_setopt( $ch, CURLOPT_HEADER, false );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
//タイムアウト時間設定
curl_setopt( $ch, CURLOPT_TIMEOUT, $timeout );
//リダイレクトしている場合も読みこむ
curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, true );
curl_setopt( $ch, CURLOPT_MAXREDIRS, 10);
$result = curl_exec( $ch );
curl_close( $ch );
//if(curl_errno($ch)) {
//
//}
return $result;
}
// 動作確認
//$result = file_get_contents( "http://www.yahoo.co.jp/");
$result = curl_get_contents( "http://www.yahoo.co.jp/");
echo $result;
・PHP: curl_setopt - Manual
・PHP: curl_errno - Manual
こんな感じに書けます。
リダイレクトしてるとうまく取得できないのは、使いだしてからわかったので追加しました。file_get_contentsはたしかにリダイレクトしていても取得できてました。
■参考
・PHPメモ : file_get_contentsの代替にcURLを使う - Mach3.laBlog
・リダイレクトしているURLからではcurl()でデータを取得できない!? - エンジニア足立のコーディング日記 | 株式会社ディープ
スポンサーリンク