PHPのcURL関数を使って外部サイトの情報を取得する方法【初心者向け】現役エンジニアが解説

プログラミング初心者向けにPHPのcURL関数を使って外部サイトにアクセスし、情報を取得する方法について解説しています。使い方は難しくないですし、リクエストもカスタマイズできるので情報の取得をする際に便利です。ぜひご覧ください。

テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日  調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名  調査手法:インターネット調査

監修してくれたメンター

nakamoto

アジマッチ有限会社代表取締役社長。書籍化歓迎。対応業務:PHP(Laravel)、機械学習、Vue.js、LAMP・AWS、越境EC、CTO、エンジニア採用、CTO、経営者の不安解決コンサルティング。

ここではPHPで使うcURL関数について、テックアカデミーのメンター(現役エンジニア)が実際のコードを使用して初心者向けに解説します。

外部サイトにアクセスしていろいろな情報を取得したいと思った時に便利なのがcURL関数です。

情報を取得するには他にfile_get_contentsという関数もありますが、リクエスト方法をカスタマイズしたい時に便利なのがcURL関数です。

ぜひ使い方をマスターしていきましょう。

 

目次

1時間でできる無料体験!

 

そもそもPHPについてよく分からないという方は、PHPとは何なのか解説した記事を読むとさらに理解が深まります。

 

cURLとは

cURLとは、外部サイトにアクセスしていろいろな情報を取得できる関数です。

cURL関数を使用すると、HTTPリクエストにより外部サイトからHTMLを取得できます。

HTTPリクエストとは、普段safariなどのブラウザでWebサイトをみているときに、内部で行われている動作です。

ブラウザからHTTPリクエストをサーバへ送り、サーバからはHTTPレスポンスが返ってきます。

サーバからのレスポンスの結果、Webサイトが表示されます。

今回紹介するcURL関数は、このHTTPリクエストを扱うことができます。

 

大石ゆかり

田島メンター!ブラウザやフォームを通さなくても、データを送ったり受信したりできるんですか?

田島悠介

そうなんだ。実は、ブラウザやフォームもHTTPリクエストを送信したり、受信したりしてるんだよ。

大石ゆかり

コードだけでもそれができるんですね。

田島悠介

そうそう。さっそくcURLの書き方を見てみよう!

 

cURLの書き方

cURLの基本的な流れを説明していきます。

1.curl_init() cURL セッションを初期化
2.curl_setopt() オプションを設定
3.curl_exec() 転送を実行
4.curl_close() セッションを終了

 

curl_init()

curl_init()は、cURLセッションを初期化します。

resource curl_init ([ string $url = NULL ] )
返り値 curl_init ([ 取得するURL ] )

返り値は成功すれば、cURLハンドルを返します。

失敗したらFalse、取得するURLで情報の取得先を指定します。

 

curl_setopt()

curl_setopt()は、cURL転送用オプションを設定します。

bool curl_setopt ( resource $ch , int $option , mixed $value )
返り値 curl_setopt ( cURLハンドル , オプション , 値 )

返り値 成功でTrue、失敗でFalseを意味します。

cURLハンドルはcurl_init()の返り値を設定します。

オプションには設定するオプション名を指定します。

値はオプションに設定する値を意味します。

 

curl_exec()

curl_exec()は、cURLセッションを実行します。

返り値 curl_exec ( cURLハンドル )

返り値 成功でTrue、失敗でFalseを意味します。

cURLハンドルはcurl_init()の返り値を設定します。

 

curl_close()

curl_close()は、cURLセッションを終了します。

返り値 curl_close ( cURLハンドル )

返り値 なし。

cURLハンドルはcurl_init()の返り値を設定します。

 

大石ゆかり

ちょっと難しいですね。

田島悠介

curl_init関数で操作するためのオブジェクトというか、ハンドルを取得して、後は、curl_setoptで設定していく感じかな。

大石ゆかり

curl_exec関数で実行、curl_close関数で終了ですか。何か面倒ですね。

田島悠介

とりあえず、実際に代表的なサイトにcURLを使って、簡単にデータを受信してみよう!

 

[PR] PHPプログラミングで挫折しない学習方法を動画で公開中

実際に書いてみよう

それでは実際にcURL関数を使用して、PHPのプログラムを書いてみましょう。

 

cURLをつかって「Techacademy」の情報を取得する

今回は、cURL関数を利用して、https://techacademy.jp/でアクセスできる、テックアカデミーの情報を取得します。

サンプルコード

<?php
  $url = "https://techacademy.jp/";
  $conn = curl_init(); // cURLセッションの初期化
  curl_setopt($conn, CURLOPT_URL, $url); // 取得するURLを指定
  curl_setopt($conn, CURLOPT_RETURNTRANSFER, true); // 実行結果を文字列で返す
  $res =  curl_exec($conn);
  var_dump($res);
  curl_close($conn); //セッションの終了

 

解説

1行目の<?phpでは、PHPプログラムを開始することを意味します。

2行目の$url = “https://techacademy.jp/”;では、変数$urlにテックアカデミーのURLである、https://techacademy.jp/を代入します。

3行目の$conn = curl_init();では、cURLセッションの初期化を行います。

4行目のcurl_setopt($conn, CURLOPT_URL, $url); では、取得するURLを指定しています。

$connで初期化の指定を行います。

CURLOPT_URLでは、cURLにおいて、取得するURLを指定目的であるということを明示しています。

$urlでは2行目で指定したテックアカデミーのURLを指定します。

5行目のcurl_setopt($conn, CURLOPT_RETURNTRANSFER, true); では、 実行結果を文字列で返す処理を行っています。

CURLOPT_RETURNTRANSFERの指定でtrueを使用することで、curl_exec() の返り値を文字列で返します。

通常はデータを直接出力する処理です。

6行目の$res = curl_exec($conn);では、変数$connをcurl_exec関数で実行した結果を、変数$resに代入しています。

7行目のvar_dump($res);では、変数$resをvar_dump関数でデバッグ表示しています。

今回はテックアカデミーのサイトの内容がデータとして表示されています。

8行目のcurl_close($conn); では、セッションを終了しています。

 

出力結果

string(725423) "<!doctype html>
<html data-n-head-ssr lang="ja" data-n-head="%7B%22lang%22:%7B%22ssr%22:%22ja%22%7D%7D">
  <head>
    <title>オンラインプログラミングスクール/受講者数No.1|テックアカデミー</title><meta data-n-head="ssr" charset="utf-8"><meta data-n-head="ssr" name="viewport" content="width=device-width,initial-scale=1"><meta data-n-head="ssr" data-hid="keyword" name="keyword" content="プログラミング, ブートキャンプ, エンジニア, ruby on rails, パーソナルメンター"><meta data-n-head="ssr" data-hid="description" name="description" content="【テックアカデミー(TechAcademy)】受講者数No.1のオンラインプログラミングスクール。通過率10%を突破した現役エンジニアからマンツーマンで学べる。転職や副業に活かせるスキルを最短4週間で習得。"><meta data-n-head="ssr" data-hid="twitter:card" name="twitter:card" content="summary_large_image"><meta data-n-head="ssr" data-hid="twitter:site" name="twitter:site" content="@techacademy"><meta data-n-head="ssr" data-hid="twitter:creator" name="twitter:creator" content="@techacademy"><meta data-n-head="ssr" data-hid="twitter:title" name="twitter:title" content="TechAcademy [テックアカデミー]"><meta data-n-head="ssr" data-hid="twitter:description" name="twitter:description" content="大切なのは、誰から学ぶか。選抜された現役エンジニアから学ぶならテックアカデミー。"><meta data-n-head="ssr" data-hid="twitter:image" name="twitter:image" content="https://techacademy.jp/_nuxt/ogp/og-image.jpg"><meta data-n-head="ssr" data-hid="og:type" property="og:type" content="website"><meta data-n-head="ssr" data-hid="og:title" property="og:title" content="TechAcademy [テックアカデミー]"><meta data-n-head="ssr" data-hid="og:description" property="og:description" content="大切なのは、誰から学ぶか。選抜された現役エンジニアから学ぶならテックアカデミー。">
 ---- 省略----

 

コラム

実は私も!?独学で損する人の特徴

「スクールは高いから独学で成功する」という気持ちの方は多いと思います。
もちろんその方が金額は低く抑えられるでしょう。
ただ 独学には向き不向きがあり、実はスクールが向いている人も大勢います。

そんな方のために参考として、 テックアカデミー卒業生がスクールを選んだ理由 をご紹介します。

  • ・困って挫折しそうなときに、質問や相談できる相手がいる環境で学んでいきたいなと思った
  • ・わかった気になっているだけだったので、自分を追い込む環境に置いた方がいいと感じた
  • ・スクールのカリキュラムで市場に求められるスキルを学ぶべきと思った

少しでも当てはまる部分があれば、 スクールが向いているかもしれません。
お試しのつもりで、まずは一度 無料相談 に参加してみませんか?

現役エンジニア・デザイナーに何でも気軽に相談できる30分すべて無料で できます。
無理な勧誘は一切ない ので、お気軽にご参加ください。

今なら相談した方限定の割引・参加特典付き! 無料相談はこちら

おわりに

cURLではHTTPリクエスト情報を扱うことができます。

これにより外部のサイトから情報を取得することも容易になります。

プログラミングの幅が広がります。

ぜひ使い方を覚えましょう。

 

大石ゆかり

データが受信できました。ブラウザの場合は、このソースコードを元にして表示してる感じですか?

田島悠介

そうなんだ。cURLを使って、COOKIEを送受信したり、POST送信もできたりするんだ。

大石ゆかり

ブラウザやフォームによるデータの送受信は、実際にはコードで処理がされてたんですね。

田島悠介

そうなんだ。ちょっと難しいけど、こういうふうにブラウザやフォームを経由せずにデータを送受信する仕組みがあるって覚えておくといいね。

 

PHPを学習中の方へ

これで解説は終了です、お疲れさまでした。

  • つまずかず「効率的に」学びたい
  • 副業や転職後の「現場で使える」知識やスキルを身につけたい

プログラミングを学習していて、このように思ったことはありませんか?

テックアカデミーのPHP/Laravelコースでは、第一線で活躍する「プロのエンジニア」が教えているので、効率的に実践的なスキルを完全オンラインでしっかり習得できます。

合格率10%の選考を通過した、選ばれたエンジニアの手厚いサポートを受けながら、PHP/Laravelを使ったWebアプリケーション開発を学べます。

まずは一度、無料体験で学習の悩みや今後のキャリアについて話してみて、「現役エンジニアから教わること」を実感してみてください。

時間がない方、深く知ってから体験してみたい方は、今スグ見られる説明動画から先に視聴することをおすすめします!

初心者・未経験でもできる。まずはテックアカデミーに相談しよう

プログラミングを独学していて、このように感じた経験はないでしょうか?

  • ・調べてもほしい情報が見つからない
  • ・独学のスキルが実際の業務で通用するのか不安
  • ・目標への学習プランがわからず、迷子になりそう

テックアカデミーでは、このような 学習に不安を抱えている方へ、現役エンジニア講師とマンツーマンで相談できる機会を無料で提供 しています。
30分間、オンラインでどんなことでも質問し放題です。

「受けてよかった」と感じていただけるよう 厳しい試験を通過した講師 があなたの相談に真摯に向き合います。

「ただ気になることを相談したい」
「漠然としているがプロの話を聞いてみたい」

こんな気持ちでも大丈夫です。

無理な勧誘は一切ありません ので、まずはお気軽にご参加ください。
※体験用のカリキュラムも無料で配布いたします。(1週間限定)

今なら参加者限定の割引特典付き! 無料相談を予約する