본문 바로가기

PHP

PHP 에서 CURL 사용하기

반응형

cURL은 PHP 에서 외부 API에 접근하여 데이터를 가져오려고 할때 많이 사용합니다.

 

cURL 이란?

PHP cURL은 PHP 프로그래밍 언어에서 사용되는 내장 함수 중 하나입니다. cURL은 "Client URL Library"의 약자로, 웹 서버나 FTP 서버 등과 통신하기 위한 라이브러리입니다.
cURL을 사용하면 PHP 코드에서 다른 서버로 HTTP 요청을 보내거나 파일을 다운로드하고 업로드하는 등의 작업을 수행할 수 있습니다.

 

 

PHP cURL 사용 방법

 

1. cURL 세션 초기화

$curl = curl_init();

 

2. 옵션 설정

다양한 옵션을 설정하여 요청을 조정할 수 있습니다. 예를 들어, 요청 URL, 요청 방법(GET, POST 등), 요청 헤더, 요청 본문 등을 설정할 수 있습니다.
curl_setopt($curl, CURLOPT_URL, 'http://example.com/api');
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); // 응답을 변수에 저장
curl_setopt($curl, CURLOPT_POST, true); // POST 요청 설정
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($postData)); // POST 데이터 설정

 

3.요청 실행

$response = curl_exec($curl);

 

4. cURL 세션 종료

curl_close($curl);

 

 

 

함수로 만들어서 사용하면 좋습니다.

	//데이터 크롤링
	//$html = GetHTML("https://www.naver.com");
	function GetHTML($url){
		$headers = array(
			"Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7",
			"Host: www.rda.go.kr",
			"User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36"
		);

		$Curl = curl_init();
		//curl_setopt($Curl, CURLOPT_URL, "https://www.rda.go.kr/board/board.do?prgId=day_farmprmninfoEntry&boardId=farmprmninfo&searchKey=&searchVal=&mode=list&searchSDate=&searchEDate=&searchOrgDeptKey=org&searchOrgDeptVal=&currPage=1");
		curl_setopt($Curl, CURLOPT_URL, $url);
		curl_setopt($Curl, CURLOPT_RETURNTRANSFER, 1);
		curl_setopt($Curl, CURLOPT_SSL_VERIFYPEER, FALSE);
		curl_setopt($Curl, CURLOPT_HTTPHEADER, $headers);
		$Result = curl_exec($Curl);
		
		//return str_replace("<", "", $Result);
		return $Result;
	}
    
    //url, param 파싱
    // PasingParam("https://www.rda.go.kr/board/board.do?prgId=day_farmprmninfoEntry&boardId=farmprmninfo")
    // 파라메터 (키, 값) 으로 출력 : prgId, boardId 
	function PasingParam($url_param)
	{
		//echo $url_param . "<br>\r\n";
		$arParams = array();
		
		$arData1 = preg_split('/([?|&])/', $url_param, -1);	//정규식
		
		//print_r($arData1);
		foreach($arData1 as $data)
		{
			//echo $data . "<br>\r\n";
			$arData2 = explode("=", $data);
			if(2 == count($arData2))
			{
				$key = trim($arData2[0]);
				$val = trim($arData2[1]);
				
				$arParams[$key] = $val;
			}
		}
		
		return $arParams;
	}
반응형