ホームページ >php教程 >php手册 >PHP でのcurl_init関数の使用手順

PHP でのcurl_init関数の使用手順

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBオリジナル
2016-06-13 12:12:411200ブラウズ

コードをコピーします コードは次のとおりです。


$ch =curl_init()
$c_url = 'http:// www.baidu .com';
$c_url_data = "product_&type=".$type."";
curl_setopt($ch, CURLOPT_URL,$c_url); ;
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $c_url_data);
echo $result =curl_exec($ch);
unset($ch);


PHP での Curl の使用

投稿日 2008 年 9 月 14 日 PHP に帰属
元の (英語) アドレス: http://www.phpit .net /article/using-curl-php 著作権表示: 表示 - 非営利 - 派生禁止 2.0
要約:
この記事では、主に 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 ライブラリの使用方法を見てみましょう。他の使用法を見てください。しかし、次に、最も基本的な使用法から始めたいと思います。
基本的な使用法:
最初のステップでは、curl_init() 関数を通じて新しい Curl セッションを作成します。コードは次のとおりです。 :
// 新しいcurlリソースを作成します
$ch =curl_init();
?> URLのコンテンツを取得する必要がある場合は、次のステップは、curl_setopt() 関数に URL を渡すことです。コードは次のとおりです。
// URL とその他の適切なオプションを設定します
curl_setopt($ch, CURLOPT_URL, “http://www.google.com/”) ;
?>
前のステップが完了すると、curl は URL サイトのコンテンツを取得して出力します。コード:
// URL を取得してブラウザに渡します
curl_exec($ch);
?> 最後に、現在の Curl セッションを閉じます
//curl リソースを閉じますシステム リソースを解放します
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/”); ch, CURLOPT_FOLLOWLOCATION, true );
// URL を取得し、
curl_exec($ch);
?> Google がリダイレクト リクエストを送信した場合、上記このパラメータに関連する 2 つのオプションは、CURLOPT_MAXREDIRS と CURLOPT_AUTOREFERER です。
パラメータ CURLOPT_MAXREDIRS オプションを使用すると、この数を超えると、そのコンテンツは無効になります。より長く入手できます。 CURLOPT_AUTOREFERER が true に設定されている場合、curl は自動的にリファラー ヘッダーを各ジャンプ リンクに追加します。これはあまり重要ではないかもしれませんが、場合によっては非常に便利です。
次に導入されるパラメータは CURLOPT_POST です。これは、GET リクエストの代わりに POST リクエストを実行できるため、非常に便利な機能です。これは本質的に、ページの

他のフォームを送信できることを意味します。実際に行う必要はありません。フォームに記入してください。次の例は、私が言いたいことを示しています:



コードをコピーします

コードは次のとおりです: // 新しいカールを作成しますresource $ch =curl_init();

// URL とその他の適切なオプションを設定します

curl_setopt($ch, CURLOPT_URL,”http://projects/phpit/content/usingcurl php/demos/handle_form) .php”) ;
// POST を実行します
$data = array('name' => 'Dennis', 'surname' => 'Pallett'); CURLOPT_POST, true) ;
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_exec($ch)> .php ファイル:
echo '受信したフォーム変数:';
print_r ($_POST);

ご覧のとおり、これによりフォームの送信が非常に簡単になり、常にフォームに入力することなくすべてのフォームをテストできる優れた方法です。
パラメータ CURLOPT_CONNECTTIMEOUT は通常、curl がリンクを要求する時間を設定するために使用されます。これは非常に重要なオプションです。この時間を設定しすぎると、curl 要求が失敗する可能性があります。
しかし、あまりにも長く設定すると、PHP スクリプトが停止してしまう可能性があります。このパラメータに関連するオプションは CURLOPT_TIMEOUT です。これは、curl の実行が許可されるまでに必要な時間を設定するために使用されます。これを非常に小さい値に設定すると、ダウンロードに時間がかかるため、ダウンロードされたページが不完全になる可能性があります。
最後のオプションは CURLOPT_USERAGENT で、webspilder や IE6.0 などのリクエストのクライアント名をカスタマイズできます。サンプル コードは次のとおりです。



コードをコピーします。

コードは次のとおりです:


// 新しいカール リソースを作成します
$ch =curl_init();
// URL とその他の適切なオプションを設定します
curl_setopt($ch , CURLOPT_URL, “http://sc.jb51.net/”);
curl_setopt($ch, CURLOPT_USERAGENT, '私のカスタム Web スパイダー/0.1'); , CURLOPT_FOLLOWLOCATION, true);

// URL を取得し、 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);
// 情報を印刷します
print_r (curl_getinfo($ch)); >?>


返される情報のほとんどは、このリクエストに費やされた時間、返されたヘッダー ファイル情報、そしてもちろんサイズなどの一部のページ情報など、リクエスト自体です。ページコンテンツの最終変更時刻。
curl_getinfo() 関数については以上です。次に、実際に何に使用されるかを見てみましょう。

実際の使用法:
curl ライブラリの最初の使用法は、URL ページが存在するかどうかを確認することです。たとえば、404 は、そのページが存在しないことを意味します。いくつかの例を見てみましょう:



コードをコピー

コードは次のとおりです: // 新しいカール リソースを作成します

$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 スパイダーを作成できます。この記事は Web スパイダーの書き方に関するものではないため、Web スパイダーについては詳しく説明しませんが、将来的には、curl を使用して PHPit で Web スパイダーを構築することを紹介します。
結論:

こちら。この記事では、PHP でのカール ライブラリの使用方法とそのほとんどのオプションを説明しました。
Web ページを取得するだけの最も基本的なタスクの場合は、おそらく CURL ライブラリは必要ありませんが、もう少し高度なことを実行したい場合は、curl ライブラリを使用することをお勧めします。
近い将来、phpit を使用して、Google のウェブ スパイダーに似た独自のウェブ スパイダーを構築する方法を正確に説明する予定ですので、楽しみにしていてください。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。