ホームページ  >  記事  >  バックエンド開発  >  PHP は CURL を使用して GET および POST リクエストのステップの例を実装します

PHP は CURL を使用して GET および POST リクエストのステップの例を実装します

韦小宝
韦小宝オリジナル
2018-02-24 09:43:092837ブラウズ

CURL は、URL 構文を使用してファイルやデータを転送するツールで、HTTP、FTP、TELNET などの多くのプロトコルをサポートしています。最も優れた点は、PHP が CURL ライブラリもサポートしていることです。 PHP の CURL ライブラリを使用して、Web ページを簡単かつ効果的にスクレイピングします。スクリプトを実行して、クロールした Web ページを分析するだけで、必要なデータをプログラムで取得できます。リンクから部分データを取得する場合でも、XML ファイルを取得してデータベースにインポートする場合でも、単に Web ページのコンテンツを取得する場合でも、CURL は強力な PHP ライブラリです。

PHPでCURLリクエストを確立する基本手順

①: 初期化

curl_init()

②: プロパティを設定

curl_setopt() //有一长串CURL 参数可供设置,它们能指定URL请求的各个细节。

③: 実行して結果を取得

curl_exec()

④: ハンドルを解放

curl_close()

CURL GETとPOSTを実装する

①: GETメソッドを実装する

//初始化
$curl = curl_init();
//设置抓取的url
curl_setopt($curl, CURLOPT_URL, 'http://www.baidu.com');
//设置头文件的信息作为数据流输出
curl_setopt($curl, CURLOPT_HEADER, 1);
//设置获取的信息以文件流的形式返回,而不是直接输出。
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
//执行命令
$data = curl_exec($curl);
//关闭URL请求
curl_close($curl);
//显示获得的数据
print_r($data);

②: POSTメソッドを実装する

//初始化
$curl = curl_init();
//设置抓取的url
curl_setopt($curl, CURLOPT_URL, 'http://www.baidu.com');
//设置头文件的信息作为数据流输出
curl_setopt($curl, CURLOPT_HEADER, 1);
//设置获取的信息以文件流的形式返回,而不是直接输出。
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
//设置post方式提交
curl_setopt($curl, CURLOPT_POST, 1);
//设置post数据
$post_data = array(
    "username" => "coder",
    "password" => "12345"
);
curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data);
/执行命令
$data = curl_exec($curl);
//关闭URL请求
curl_close($curl);
//显示获得的数据
print_r($data);

③: 取得したデータがjson形式の場合は、json_decode関数を使用して解釈しますそれを配列に入れます。

$output_array = json_decode($data,true); // 2 番目のパラメータが true の場合、配列形式に変換されます。記入しない場合はオブジェクト形式になります

json_decode($data) を使って解析するとオブジェクト型のデータが得られます。

カプセル化された関数

 //参数1:访问的URL,参数2:post数据(不填则为GET),参数3:提交的$cookies,参数4:是否返回$cookies
function curl_request($url,$post='',$cookie='', $returnCookie=0){
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)');
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($curl, CURLOPT_AUTOREFERER, 1);
    curl_setopt($curl, CURLOPT_REFERER, "http://XXX");
        if($post) {
             curl_setopt($curl, CURLOPT_POST, 1);
             curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($post));
         }
        if($cookie) {
             curl_setopt($curl, CURLOPT_COOKIE, $cookie);
         }
    curl_setopt($curl, CURLOPT_HEADER, $returnCookie);
    curl_setopt($curl, CURLOPT_TIMEOUT, 10);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    $data = curl_exec($curl);
        if (curl_errno($curl)) {
             return curl_error($curl);
        }
         curl_close($curl);
        if($returnCookie){
            list($header, $body) = explode("\r\n\r\n", $data, 2);
            preg_match_all("/Set\-Cookie:([^;]*);/", $header, $matches);
            $info['cookie']  = substr($matches[1][0], 1);
            $info['content'] = $body;
            return $info;
        }else{
             return $data;
    }
}

これら 2 つの関数は難しくありませんが、それでも学ぶ価値があります。これら 2 つの関数は、インターフェイスを作成するとき、またはインターフェイスを呼び出すときに使用する必要があるためです。

おすすめ関連記事:

phpでTmallとTaobaoの商品データをクロールする方法

以上がPHP は CURL を使用して GET および POST リクエストのステップの例を実装しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。