废话不多说直接上代码:
要用php的curl模块,先在php.ini中开启php_curl.dll;
使用curl步骤;
1.初始化一个curl资源句柄;
2.设置url和相应的选项;
3.抓取url并把它传递给浏览器;
4.关闭curl资源,并且释放系统资源;
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,"http://www.baidu.com/");//curl的很多高级特性就在这里设置
curl_exec($ch);
curl_close($ch);
?>
curl高级特性:
1.curl模拟post传值;2.curl模拟表单上传;3.curl处理多个url;
print_r($_POST);
//curl模拟post传值
$url = "http://localhost/post.php";
$post_arr = array(
"user" => "demo",
"pwd" => "123456",
);
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//将curl_exec()获取到的文件信息以文件流的形式返回,而不是直接输出
curl_setopt($ch, CURLOPT_POST, 1);//模拟表单的post方式提交
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_arr);
$out = curl_exec($ch);
curl_close($ch);
echo $out;
?>
curl模拟上传与post传值类似,唯一需要注意的就是上传的文件名之前要加上@例如:
$file_arr = array(
'a' => "@D:/test.jpg",
);
curl处理多个url与单个url的不同之处:
//创建一对curl资源
$ch1 = curl_init("http://www.baidu.com/");
$ch2 = curl_init("http://www.sina.com/");
//创建批处理curl资源句柄
$mh = curl_multi_init();
//增加2个句柄
curl_multi_add_handle($ch1);
curl_multi_add_handle($ch2);
$running = null;
do{
usleep(10000);
curl_muti_exec($mh, $running);
}while($running > 0);
//关闭全部句柄
curl_multi_remoce_handle($mh, $ch1);
curl_multi_remove_handle($mh, $ch2);
curl_multi_close($mh);
据说:curl比file_get_contents的速度快4倍。。。。
详细资料:http://cn2.php.net/manual/zh/book.curl.php