file_get_contentsよりcurlを使ったほうがいいメモ

PHPを使っていると、HTMLファイルやテキスト、XMLをよく読み込みたくなるんですが、
ある案件でサーバーのセキュリティの問題で「file_get_contents」が使えない時があったんです。
その時いろいろ調べてたら「curl」という物を発見。
さらに、curlの方が読み込み速度が早くてパフォーマンスが良いらしい。

ということで、使い方を忘れないようみメモしておきますよ。

【基本的な使い方 (同じ階層のhogo.txtを読み込みます。)】

<?
$ch = curl_init();
curl_setopt( $ch, CURLOPT_URL, 'hoge.txt' );
curl_setopt( $ch, CURLOPT_HEADER, false ); 
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
$result = curl_exec( $ch );
curl_close( $ch );
echo $result;
?>

【複数のファイルを読み込む場合】

<?
load_file("hogo.txt");
load_file("hogo2.txt");
load_file("hogo3.txt");

//繰り返し使うので関数にしています。
function load_file($url){
	$ch = curl_init();
	curl_setopt( $ch, CURLOPT_URL, 'hoge.txt' );
	curl_setopt( $ch, CURLOPT_HEADER, false ); 
	curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
	$result = curl_exec( $ch );
	curl_close( $ch );
	echo $result;
}
?>

でも何に使ったらいいかわからない~というあなた、
とりあえずyahooトップのニュースの文字を取得してみよう。

<?
$ch = curl_init();
curl_setopt( $ch, CURLOPT_URL, 'http://www.yahoo.co.jp/' );
curl_setopt( $ch, CURLOPT_HEADER, false );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );

//1行だけ追加します。
//firefoxでアクセスしているように偽装します。
curl_setopt( $ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:20.0) Gecko/20100101 Firefox/20.0' );

$result = curl_exec( $ch );
curl_close( $ch );


//この時点で $result にyahooのソースコードが入っていますので、
//ソースの中からニュースのブロックだけを取り出します。

preg_match( '/<div id="topicsfb" class="current">(.*?)<\/div>/i', $result, $matches);
echo $matches[1];

?>

上記のコードを、ページの表示したい部分に書くと
ニュースが表示されると思います。
これを応用すれば、なんでも取得できますよね。
例えばトップページにブログの最新記事を表示させてたいときなど。

cURLのパラメーターは下記サイトにまとめていただいていらっしゃったのでメモ。
PHPマニュアル:curl_setopt:cURL 転送用オプションを設定する


Tags:

Comments are closed.

�g�уA�N�Z�X��� Google Analytics Alternative