PHP curl函数的使用示例 模拟curl请求

PHP curl函数是可以模仿用户进行访问页面了,下面来给各位介绍一下工作中常用的到的PHP curl函数示例.

PHP有着很好的curl机制,但是用起来总是不那么的令人满意,因为它需要好几步的操作和,好多难记的参数,这里我将php的curl封装了一下,使它不那么的复杂,代码如下:

  1. <?php
  2. /**
  3. * php模拟curl请求
  4. *
  5. * @param string $url 请求的url
  6. * @param string $method 请求的方法, 默认POST
  7. * @param array $data 请求传递的数据
  8. * @param array $header 请求设置的头信息
  9. * @param int $head 是否打印头信息
  10. * @param int $body 是否打印body信息
  11. * @param int $timeout 设置超时时间
  12. *
  13. * @return array
  14. */
  15. function curl($url,$method="POST",$data=array(),$header=array(),$head=0,$body=0,$timeout = 30)
  16. {
  17. $ch = curl_init();
  18. curl_setopt($ch, CURLOPT_URL, $url);
  19. if (strpos($url, "https") !== false ) {
  20. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
  21. curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
  22. if (isset($_SERVER['HTTP_USER_AGENT'])) {
  23. curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
  24. }
  25. }
  26. if (!emptyempty($header)) {
  27. curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
  28. }
  29. switch ($method) {
  30. case 'POST':
  31. curl_setopt($ch, CURLOPT_POST, 1);
  32. curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
  33. break; //开源软件:phpfensi.com
  34. case 'GET':
  35. break;
  36. case 'PUT':
  37. curl_setopt($ch, CURLOPT_PUT, 1);
  38. curl_setopt($ch, CURLOPT_INFILE, '');
  39. curl_setopt($ch, CURLOPT_INFILESIZE, 10);
  40. break;
  41. case 'DELETE':
  42. curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE");
  43. break;
  44. default:
  45. break;
  46. }
  47. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  48. curl_setopt($ch, CURLOPT_HEADER, $head);
  49. curl_setopt($ch, CURLOPT_NOBODY, $body);
  50. curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
  51. $rtn = curl_exec($ch); //获得返回
  52. if (curl_errno($ch)) {
  53. echo 'Errno'.curl_error($ch);//捕抓异常
  54. }
  55. curl_close($ch);
  56. return $rtn;
  57. }
  58. ?>