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