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: PHP