PHP での Curl の使用
原文(英語)アドレス: http://www.phpit.net/article/using-curl-php 著作権表示: Attribution-Noncommercial-NoDerivatives 2.0
Abstract:
この記事では この記事では主に説明していますphp_curl ライブラリの知識と、php_curl をより効果的に使用する方法を説明します。
はじめに
PHP スクリプト コードを作成するときに次の問題に遭遇することがあります: 他のサイトからコンテンツを取得するにはどうすればよいですか?ここにはいくつかの解決策があります。最も簡単なのは、PHP で fopen() 関数を使用することですが、fopen 関数には、「Web クローラー」を構築してクライアントの説明を定義したい場合などに使用する十分なパラメーターがありません。クローラー (IE、Firefox) の場合、POST、GET などのさまざまなリクエスト メソッドを通じてコンテンツを取得します。これらの要件は、 fopen() 関数を使用して達成することはできません。
上記の問題を解決するには、PHP の拡張ライブラリ Curl を使用できます。この拡張ライブラリは通常、デフォルトでインストール パッケージに含まれており、他のサイトのコンテンツを取得したり、他のことを行うために使用できます。もの。 。
注: これらの 2 つのコードには、php_curl 拡張ライブラリのサポートが必要です。curl サポートが有効になっている場合は、curl ライブラリがサポートされていることを意味します。
1. Windows で PHP の CURL ライブラリのサポートを有効にします:
php.ini を開き、extension=php_curl.dll の前の ; 記号を削除します。
2. Linux で PHP の Curl ライブラリのサポートを有効にする:
PHP をコンパイルするときに ./configure の後に ?with-curl を追加します
基本的な使用法:
最初のステップでは、関数curl_init()を通じて新しいcurlセッションを作成します。コードは次のとおりです:
php
// 新しいcurlリソースを作成します
$ch =curl_init();
?>
URLのコンテンツを取得する必要がある場合、次のステップは、curlセッションを作成することです。 curl_setopt() 関数への URL、コード:
// URL とその他の適切なオプションを設定します
curl_setopt($ch, CURLOPT_URL, “http://www.google.com/”);
?>
done 前のステップで、curl が URL サイトのコンテンツを取得して印刷する準備作業が完了しました。コード:
// URL を取得してブラウザに渡します
curl_exec($ch);
?>
最後に、現在の Curl セッションを閉じます
//closecurlリソースを追加し、システム リソースを解放します
curl_close($ch);
?>
完成したコード例を見てみましょう:
// 新しいcurlリソースを作成します
$ch =curl_init ();
// URL とその他の適切なオプションを設定します
curl_setopt($ch, CURLOPT_URL, “http://www.google.nl/”);
// URL を取得してブラウザに渡します
curl_exec($ch );
//curl リソースを閉じ、システム リソースを解放します
curl_close($ch);
?>
(オンライン デモを見る)
別のサイトのコンテンツを取得し、自動的にブラウザに出力しました。取得した情報を整理し、その出力内容を制御する他の方法はありますか? curl_setopt() 関数のパラメータで、コンテンツを取得するが出力しない場合は、CURLOPT_RETURNTRANSFER パラメータを 0 以外の値/true! に設定します。を参照してください:
$ch =curl_init();
// URLおよびその他の適切なオプションを設定します
curl_setopt($ch, CURLOPT_URL, “http://www .google.nl/”);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// URL を取得し、出力を返します
$output =curl_exec($ch);
// Curl リソースを閉じ、システム リソースを解放します
curl_close($ch);
// 'Google' を 'PHPit' に置き換えます
$output = str_replace('Google', 'PHPit', $output);
// 出力を印刷します
echo $output;
?>
(オンライン デモを見る)
上記の 2 つの例では、curl_setopt() 関数のさまざまなパラメーターを設定することで、さまざまな結果が得られることがわかります。これが、curl が強力な理由です。これらのパラメータの意味。
CURL 関連のオプション:
PHP マニュアルのcurl_setopt() 関数を読んだことがある方は、その下にパラメータの長いリストがあることに気づくでしょう。それらを 1 つずつ紹介するのは不可能です。詳細については、PHP マニュアルを確認してください。ここでは、一般的に使用されるいくつかのパラメーターと一部のパラメーターのみを紹介します。
最初の興味深いパラメータは CURLOPT_FOLLOWLOCATION です。このパラメータを true に設定すると、curl はリダイレクト コマンドに基づいてさらに深いリダイレクト パスを取得します。たとえば、PHP ページを取得しようとすると、次のようなジャンプ コードが存在します。この PHP ページ の場合、curl はジャンプ コードを返す代わりに http://new_url からコンテンツを取得します。完全なコードは次のとおりです:
// 新しいカールリソースを作成します
$ch =curl_init();
// URL とその他の適切なオプションを設定します
curl_setopt($ch, CURLOPT_URL, “http://www.google.com/”);
curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, true);
// URL を取得し、print
curl_exec($ch);
?>
(オンライン デモを表示),
Google がリダイレクト リクエストを送信した場合、上記の例は以下に基づいてリダイレクトします。 URL は引き続きコンテンツを取得します。このパラメーターに関連する 2 つのオプションは CURLOPT_MAXREDIRS と CURLOPT_AUTOREFERER です。この値を超えると、そのコンテンツは取得されなくなります。 CURLOPT_AUTOREFERER が true に設定されている場合、curl は自動的にリファラー ヘッダーを各ジャンプ リンクに追加します。これはあまり重要ではないかもしれませんが、場合によっては非常に役立ちます。
// 新しいcurlリソースを作成します
$ch =curl_init();
// URLとその他の適切なオプションを設定します
curl_setopt($ch, CURLOPT_URL," http: //projects/phpit/content/using%20curl%20php/demos/handle_form.php”);
// POST を実行します
$data = array('name' => 'Dennis', 'surname' => 'パレット');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
// URL を取得し、print
curl_exec($ch);
?>
(ライブデモを見る)
echo '
私が受け取ったフォーム変数:
';echo '
';<br>print_r ($ _POST);<br>echo '';
?>
ご覧のとおり、これによりフォームの送信が非常に簡単になり、フォームをまったく入力せずにすべてのフォームをテストする優れた方法になります。回。 CURLOPT_CONNECTTIMEOUT パラメータは通常、curl がリンクをリクエストする時間を設定するために使用されます。これは非常に重要なオプションです。この時間を設定しすぎると、curl リクエストが失敗する可能性があります。
しかし、あまりにも長く設定すると、おそらく PHP スクリプトが停止してしまいます。このパラメータに関連するオプションは CURLOPT_TIMEOUT です。これは、curl の実行が許可されるまでに必要な時間を設定するために使用されます。これを非常に小さい値に設定すると、ダウンロードに時間がかかるため、ダウンロードされたページが不完全になる可能性があります。
最後のオプションは CURLOPT_USERAGENT で、webspilder や IE6.0 などのリクエストのクライアント名をカスタマイズできます。 サンプル コードは次のとおりです:
// 新しいcurl リソースを作成します
$ ch =curl_init ();
// URL とその他の適切なオプションを設定します
curl_setopt($ch, CURLOPT_URL, “http://www.useragent.org/”);
curl_setopt($ch, CURLOPT_USERAGENT, '私のカスタム Web スパイダー/0.1′ );
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
// URL を取得し、print
curl_exec($ch);
?>
(ライブデモを見る)
ここで、最も興味深いものを配置しますパラメータ これを導入したら、curl_getinfo() 関数を導入して、何ができるかを見てみましょう。
ページ情報の取得:
関数curl_getinfo() を使用すると、オプションの 2 番目のパラメーターを設定することで、この情報を編集できます。また、配列の形式で渡すこともできます。次の例のように:
// 新しいcurlリソースを作成します
$ch =curl_init();
// URLとその他の適切なオプションを設定します
curl_setopt($ch, CURLOPT_URL, "http://www .google.com");
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FILETIME, true);
// URL を取得します
$output =curl_exec ($ch);
// 情報を印刷します
echo '
';<br>print_r (curl_getinfo($ch));<br>echo '';
?>
(ライブデモを見る)
返される情報のほとんどは、リクエストにかかった時間、返されたヘッダー ファイル情報、そしてもちろんページ コンテンツのサイズや最終変更時刻などの一部のページ情報など、リクエスト自体です。
curl_getinfo() 関数については以上です。実際に何に使用されるかを見てみましょう。
実際の使用法:
curl ライブラリの最初の使用法は、URL ページが存在するかどうかを確認することです。たとえば、404 は、そのページが存在しないことを意味します。いくつかの例を見てみましょう:
// 新しいcurlリソースを作成します
$ch =curl_init();
// URLおよびその他の適切なオプションを設定します
curl_setopt($ch, CURLOPT_URL, “http://www.google.com/does /not/exist”);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// URL を取得
$output =curl_exec($ch);
// 応答コードを取得
$response_code =curl_getinfo($ch, CURLINFO_HTTP_CODE) ;
// 見つかりません?
if ($response_code == '404') {
echo 'ページが存在しません';
} else {
echo $output;
}
?>
(ライブデモを見る)
他のユーザーは、リクエストされた各ページの存在を確認する自動チェッカーを作成することができます。
curl ライブラリを使用して、Google や他の Web スパイダーに似た Web スパイダーを作成できます。この記事はウェブ スパイダーの書き方に関するものではないため、ウェブ スパイダーに関する詳細については触れませんが、将来的には、curl を使用して PHPit でウェブ スパイダーを構築する方法を紹介します。
結論:
この記事ではPHP でのカール ライブラリの使用方法とそのオプションのほとんどを説明しました。
Web ページを取得するだけの最も基本的なタスクの場合は、おそらく CURL ライブラリは必要ありませんが、もう少し高度なことを実行したい場合は、curl ライブラリを使用することをお勧めします。
近い将来、phpit を使用して、Google のウェブ スパイダーに似た独自のウェブ スパイダーを構築する方法を正確に説明する予定ですので、楽しみにしていてください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









Laravelは、直感的なフラッシュメソッドを使用して、一時的なセッションデータの処理を簡素化します。これは、アプリケーション内に簡単なメッセージ、アラート、または通知を表示するのに最適です。 データは、デフォルトで次の要求のためにのみ持続します。 $リクエスト -

PHPクライアントURL(CURL)拡張機能は、開発者にとって強力なツールであり、リモートサーバーやREST APIとのシームレスな対話を可能にします。尊敬されるマルチプロトコルファイル転送ライブラリであるLibcurlを活用することにより、PHP Curlは効率的なexecuを促進します

Laravelは簡潔なHTTP応答シミュレーション構文を提供し、HTTP相互作用テストを簡素化します。このアプローチは、テストシミュレーションをより直感的にしながら、コード冗長性を大幅に削減します。 基本的な実装は、さまざまな応答タイプのショートカットを提供します。 Illuminate \ support \ facades \ httpを使用します。 http :: fake([[ 'google.com' => 'hello world'、 'github.com' => ['foo' => 'bar']、 'forge.laravel.com' =>

顧客の最も差し迫った問題にリアルタイムでインスタントソリューションを提供したいですか? ライブチャットを使用すると、顧客とのリアルタイムな会話を行い、すぐに問題を解決できます。それはあなたがあなたのカスタムにより速いサービスを提供することを可能にします

記事では、PHP 5.3で導入されたPHPの後期静的結合(LSB)について説明し、より柔軟な継承を求める静的メソッドコールのランタイム解像度を可能にします。 LSBの実用的なアプリケーションと潜在的なパフォーマ

この記事では、フレームワークにカスタム機能を追加し、アーキテクチャの理解、拡張ポイントの識別、統合とデバッグのベストプラクティスに焦点を当てています。

記事では、入力検証、認証、定期的な更新など、脆弱性から保護するためのフレームワークの重要なセキュリティ機能について説明します。
