PHPとcURLを活用した5つの手順!初心者向けガイド

PHPとcURLの使い方を学ぶ初心者の手順解説図PHP
この記事は約13分で読めます。

 

【サイト内のコードはご自由に個人利用・商用利用いただけます】

この記事では、プログラムの基礎知識を前提に話を進めています。

説明のためのコードや、サンプルコードもありますので、もちろん初心者でも理解できるように表現してあります。

基本的な知識があればカスタムコードを使って機能追加、目的を達成できるように作ってあります。

※この記事は、一般的にプロフェッショナルの指標とされる『実務経験10,000時間以上』を凌駕する現役のプログラマチームによって監修されています。

サイト内のコードを共有する場合は、参照元として引用して下さいますと幸いです

※Japanシーモアは、常に解説内容のわかりやすさや記事の品質に注力しております。不具合、分かりにくい説明や不適切な表現、動かないコードなど気になることがございましたら、記事の品質向上の為にお問い合わせフォームにてご共有いただけますと幸いです。
(送信された情報は、プライバシーポリシーのもと、厳正に取扱い、処分させていただきます。)

はじめに

プログラミングの世界には様々なツールや言語が存在しますが、今日はPHPとcURLに焦点を当てます。

この記事を通して、あなたはPHPとcURLの基本的な使い方を学び、実際にプログラムに組み込むことができるようになるでしょう。

●PHPとは

PHPは「Hypertext Preprocessor」の略称で、Webアプリケーションを開発するためのスクリプト言語です。

HTMLと組み合わせて使われることが多く、Webサーバー側で動作します。

動的なWebページの生成やデータベースへのアクセスなど、様々な機能を提供します。

●cURLとは

cURLは、多機能なデータ転送ツールであり、異なるプロトコルを介してデータを送受信することが可能です。

HTTP、HTTPS、FTPなどのプロトコルに対応しています。

コマンドラインから利用できますが、PHP等のプログラムからも利用できるライブラリ機能も提供しています。

●PHPとcURLの組み合わせの利点

PHPとcURLを組み合わせて使用することで、ウェブサイトへのアクセス、APIとの連携、データのダウンロードなど、多岐にわたる作業を自動化できます。

また、cURLの提供する豊富なオプションにより、高度なネットワーク操作を行うことも可能です。

●PHPとcURLを使うための前準備

PHPとcURLを使用するためには、まずPHPがインストールされ、cURL拡張が有効化されている必要があります。

多くの環境では、デフォルトでcURL拡張が有効になっていますが、万が一無効になっている場合は、php.iniファイルで有効化することができます。

●PHPとcURLの使い方:5つの手順

PHPでcURLを使う基本的な流れは次の通りです。

○手順1:cURLセッションを初期化する

cURLの使用を開始するには、まずセッションを初期化します。

これは curl_init関数を使って行います。

この関数は、新しいcURLリソースを返します。

// cURLセッションを初期化
$ch = curl_init();

○手順2:cURLのオプションを設定する

次に、curl_setopt関数を使って、cURLの各種オプションを設定します。

この関数は3つの引数を取ります。

第1引数はcURLハンドラ、第2引数は設定するオプションの種類、第3引数はその値です。

// URLを設定
curl_setopt($ch, CURLOPT_URL, "https://example.com");

○手順3:cURLリクエストを実行する

cURLのオプション設定が終わったら、リクエストを送信します。

これはcurl_exec関数を使って行います。成功すると、結果を表示します。

// cURLリクエストを実行
$result = curl_exec($ch);

○手順4:cURLセッションを閉じる

最後に、cURLセッションを閉じます。

これはcurl_close関数を使って行います。

// cURLセッションを閉じる
curl_close($ch);

○手順5:エラーハンドリングを行う

もしcURLリクエストが失敗した場合、エラーメッセージを取得して表示することができます。

これにはcurl_error関数を使用します。

if($result === false) {
    echo 'Error: ' . curl_error($ch);
}

これらの手順を一つの例としてまとめたものが下記のサンプルコードになります。

このコードでは、”https://example.com”というURLに対してHTTPリクエストを送信し、その結果を表示する一連の流れを示しています。

$ch = curl_init(); // cURLセッションを初期化
curl_setopt($ch, CURLOPT_URL, "https://example.com"); // URLを設定
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // レスポンスを文字列で取得
$result = curl_exec($ch); // cURLリクエストを実行
if($result === false) {
    echo 'Error: ' . curl_error($ch); // エラーハンドリング
} else {
    echo $result; // リクエスト結果を表示
}
curl_close($ch); // cURLセッションを閉じる

上記のコードを実行すると、指定したURLの内容が表示されます。

もしエラーが発生した場合、エラーメッセージが表示されます。

●PHPとcURLを用いたサンプルコード

PHPとcURLの組み合わせは、多様なネットワーク操作を行う際に非常に強力です。

ここでは、それらの活用法をいくつかのサンプルコードとともに紹介します。

○サンプルコード1:単純なGETリクエスト

まず最初に、単純なGETリクエストを行うサンプルコードを見ていきましょう。

このコードでは、”https://example.com”というURLにアクセスし、取得したHTMLを表示しています。

また、CURLOPT_RETURNTRANSFERオプションをtrueに設定することで、結果を文字列として取得しています。

$ch = curl_init(); // cURLセッションを初期化
curl_setopt($ch, CURLOPT_URL, "https://example.com"); // URLを設定
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // レスポンスを文字列で取得
$result = curl_exec($ch); // cURLリクエストを実行
if($result === false) {
    echo 'Error: ' . curl_error($ch); // エラーハンドリング
} else {
    echo $result; // リクエスト結果を表示
}
curl_close($ch); // cURLセッションを閉じる

このコードを実行すると、https://example.comのHTMLコードが出力されます。

エラーが発生した場合には、エラーメッセージが表示されます。

○サンプルコード2:POSTリクエストを送る

次に、POSTリクエストを送信するサンプルコードを紹介します。

ここでは、指定したURLに対してPOSTデータを送信し、レスポンスを取得しています。

POSTデータは連想配列として作成し、http_build_query関数を用いてHTTPクエリ文字列に変換しています。

$data = array('key1' => 'value1', 'key2' => 'value2'); // POSTデータを作成
$postData = http_build_query($data); // POSTデータをHTTPクエリに変換

$ch = curl_init(); // cURLセッションを初期化
curl_setopt($ch, CURLOPT_URL, "https://example.com/post"); // URLを設定
curl_setopt($ch, CURLOPT_POST, true); // POSTメソッドを使用
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData); // POSTデータを設定
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // レスポンスを文字列で取得
$result = curl_exec($ch); // cURLリクエストを実行
if($result === false) {
    echo 'Error: ' . curl_error($ch); // エラーハンドリング
} else {
    echo $result; // リクエスト結果を表示


}
curl_close($ch); // cURLセッションを閉じる

このコードを実行すると、指定したURLにPOSTリクエストが送信され、レスポンスが出力されます。

○サンプルコード3:Basic認証を用いたリクエスト

次に、Basic認証を用いて特定のウェブページにアクセスするサンプルコードを紹介します。

このコードではcURLのオプションCURLOPT_USERPWDを利用してユーザー名とパスワードを設定し、認証が必要なページにアクセスしています。

$ch = curl_init(); // cURLセッションを初期化
curl_setopt($ch, CURLOPT_URL, "https://example.com/secret"); // URLを設定
curl_setopt($ch, CURLOPT_USERPWD, "username:password"); // Basic認証のユーザー名とパスワードを設定
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // レスポンスを文字列で取得
$result = curl_exec($ch); // cURLリクエストを実行
if($result === false) {
    echo 'Error: ' . curl_error($ch); // エラーハンドリング
} else {
    echo $result; // リクエスト結果を表示
}
curl_close($ch); // cURLセッションを閉じる

このコードを実行すると、Basic認証が必要なページにアクセスし、そのレスポンスを表示します。

もし認証に失敗すると、エラーメッセージが表示されます。

○サンプルコード4:エラーハンドリング

最後に、エラーハンドリングを行うサンプルコードをご覧ください。

エラーハンドリングは、リクエストが失敗した場合やエラーが発生した場合にその情報を取得し、対処するための重要な手順です。

このコードではcurl_error関数を使用してエラーメッセージを取得しています。

$ch = curl_init(); // cURLセッションを初期化
curl_setopt($ch, CURLOPT_URL, "https://example.com"); // URLを設定
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // レスポンスを文字列で取得
$result = curl_exec($ch); // cURLリクエストを実行
if($result === false) {
    echo 'Error: ' . curl_error($ch); // エラーメッセージを取得して表示
} else {
    echo $result; // リクエスト結果を表示
}
curl_close($ch); // cURLセッションを閉じる

このコードを実行すると、リクエストが成功すればそのレスポンスを、失敗すればエラーメッセージを表示します。

●PHPとcURLの使い方の注意点と対処法

PHPとcURLを使う際にはいくつかの注意点があります。

一つ目は、cURLリクエストがタイムアウトする場合があることです。

これは、指定したURLに接続できない場合やレスポンスが遅い場合に発生します。

この問題を解決するためには、CURLOPT_TIMEOUTオプションを設定してリクエストの最大待ち時間を制限すると良いでしょう。

また、二つ目の注意点として、SSL証明書の問題によってリクエストが失敗することがあります。

特に自己署名証明書を使用しているサーバーに接続する場合、証明書の信頼性を確認できないためリクエストが拒否されることがあります。

この問題を回避するためには、CURLOPT_SSL_VERIFYPEERオプションをfalseに設定する方法があります。

ただし、これはセキュリティリスクを伴うため、信頼できるサイト以外での使用は避けてください。

このように、PHPとcURLを使用する際には、適切なエラーハンドリングと共に、各種のオプション設定を活用して問題を予防・解決することが重要です。

さまざまな状況に対応できるよう、これらの手法を覚えておきましょう。

●PHPとcURLの応用例

PHPとcURLの組み合わせは、ウェブに対するさまざまな操作を可能にします。

ここでは、具体的な応用例として、多機能なウェブスクレイピングとAPIからのデータ取得の2つについて解説します。

○応用例1:多機能なウェブスクレイピング

最初の応用例として、ウェブスクレイピングを行うコードを紹介します。

このコードではcURLを用いて指定したURLのページを取得し、その中から特定の情報を抽出しています。

$ch = curl_init(); // cURLセッションを初期化
curl_setopt($ch, CURLOPT_URL, "https://example.com"); // スクレイピング対象のURLを設定
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // レスポンスを文字列として取得
$html = curl_exec($ch); // cURLリクエストを実行し、結果を$htmlに格納
curl_close($ch); // cURLセッションを閉じる

// レスポンスから特定の情報を抽出
$doc = new DOMDocument();
libxml_use_internal_errors(true);
$doc->loadHTML($html);
libxml_use_internal_errors(false);
$xpath = new DOMXPath($doc);
$nodes = $xpath->query("//div[@class='target-class']"); // XPathを用いて特定のエレメントを抽出

// 抽出した情報を表示
foreach($nodes as $node) {
    echo $node->nodeValue, PHP_EOL;
}

このコードを実行すると、指定したURLのページを取得し、その中から指定した条件(ここではclass属性が’target-class’のdiv要素)に合致するエレメントのテキスト内容を表示します。

○応用例2:APIからのデータ取得

次に、APIからデータを取得する応用例を見てみましょう。

このコードでは、cURLを用いてAPIにリクエストを送り、そのレスポンスを受け取ります。

$ch = curl_init(); // cURLセッションを初期化
curl_setopt($ch, CURLOPT_URL, "https://api.example.com/data"); // APIのエンドポイントを設定
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // レスポンスを文字列として取得
$result = curl_exec($ch); // cURLリクエストを実行し、結果を$resultに格納
curl_close($ch); // cURLセッションを閉じる

$data = json_decode($result, true); // レスポンス(JSON形式)を配列に変換
print_r($data); // 取得したデータを表示

このコードを実行すると、指定したAPIからデータを取得し、その結果を表示します。

APIがJSON形式のレスポンスを返す場合、json_decode関数を用いてレスポンスをPHPの配列に変換できます。

まとめ

この記事では、PHPとcURLを用いたウェブリクエストの基本的な使い方と、エラーハンドリング、Basic認証、ウェブスクレイピング、APIからのデータ取得といった応用例を通じて、PHPとcURLの強力な組み合わせを紹介しました。

初めてPHPとcURLを使う方でも理解しやすいように、基本的な概念から詳しく説明し、具体的なサンプルコードも提供しました。

これらの情報を元に、あなた自身のプロジェクトでPHPとcURLを活用して、ウェブからのデータ取得やAPIとの連携など、さまざまな作業を効率的に行うことができるでしょう。

それぞれのコードは特定の目的を果たすように設計されていますが、それらはあくまで例であり、あなたの必要に応じて自由にカスタマイズすることが可能です。

また、ウェブリクエストは非常に強力なツールである一方で、使用には注意が必要です。

特にウェブスクレイピングの際には、対象のウェブサイトの利用規約を確認し、適切に使用することが重要です。

これからPHPとcURLを学んでいく皆さんにとって、この記事が第一歩となり、新たな技術を身につける上での助けとなることを願っています。

これからもプログラミングに関する知識を深め、さまざまな技術を習得していきましょう。