PHP_CURL库函数

你可能在你的编写PHP脚本代码中会遇到这样的问题:怎么样才能从其他站点获取内容呢?这里有几个解决方式;最简单的就是在php中使用fopen()函数,但是fopen函数没有足够的参数来使用,比如当你想构建一个“网络爬虫”,想定义爬虫的客户端描述(IE,firefox),通过不同的请求方式来获取内容,比如POST,GET;等等这些需求是不可能用fopen() 函数实现的。

curl 模拟浏览器请求,比如获取远程浏览器内容,虽然可以用file_get-contents来代替,但curl还支持浏览器类型,cookie和来源ip等,功能相比强大

常用相关函数

curl_init() 初始化curl会话

curl_setopt() 设置curl传输选项

curl_exec 执行curl会话

curl_errno 返回最后一次的错误代码

curl_error 返回当前会话嘴周一次错误的字符串

curl_close 关闭curl会话

例如

<?php
// 1. 初始化
 $ch = curl_init();
 // 2. 设置选项,包括URL
 curl_setopt($ch,CURLOPT_URL,"http://www.devdo.net");
 curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
 curl_setopt($ch,CURLOPT_HEADER,0);
 // 3. 执行并获取HTML文档内容
 $output = curl_exec($ch);
 if($output === FALSE ){
 echo "CURL Error:".curl_error($ch);
 }
 // 4. 释放curl句柄
 curl_close($ch);
 ?>
<?php
// create a new curl resource
$ch = curl_init();
// set URL and other appropriate options
curl_setopt($ch, CURLOPT_URL, “http://www.google.com/does/not/exist”);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// grab URL
$output = curl_exec($ch);
// Get response code
$response_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
// Not found?
if ($response_code == ‘404′) {
echo ‘Page doesn\’t exist’;
} else {
echo $output;
}
?>

加深理解:

function getCurl($url,$cookie = null,$post_data = null,$miao = null){
 
	$ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HEADER, false);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
	
	
	if($cookie)
	{
		
		if($cookie =='auto')
		{
			$cookie_string = '';
			$_COOKIE['user_id'] = 12;
			foreach($_COOKIE as $key=>$val)
			{
				$cookie_string .= $key.'='.$val.';';
			}
			curl_setopt($ch, CURLOPT_COOKIE,$cookie_string);
		}
		elseif(is_array($cookie) && $cookie['type']=='cookie_file')
		{
			//echo $cookie['value'];
			curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie['value']);
			curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie['value']);
		}
		else
		{
			curl_setopt($ch, CURLOPT_COOKIE,$cookie);
		}
	}
	if($post_data)
	{
		curl_setopt($ch, CURLOPT_POST, 1);
 
		// 把post的变量加上
 
		curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
	}
	
	//判断超时处理
	if(!empty($miao)){
		curl_setopt($ch, CURLOPT_NOSIGNAL, 1);    //注意,毫秒超时一定要设置这个
		curl_setopt($ch, CURLOPT_TIMEOUT_MS, $miao);  //超时毫秒,cURL 7.16.2中被加入。从PHP 5.2.3起可使用	
		$head = curl_exec($ch);
		$curl_errno = curl_errno($ch);
		$curl_error = curl_error($ch);
		if($curl_errno>0){
			$head = '2';
		}else{
			$head = $head;
		}
	}else{
		$head = curl_exec($ch);
	}
 
 
 
    //$head = curl_exec($ch);
    //echo $url;echo 'bb';var_dump($head);exit;
    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch); 
	return $head;
}

猜你喜欢

转载自blog.csdn.net/ahaotata/article/details/83793791