Информер курса валют ЦБ РФ   •   Магазин расширений
1 488 просм
3 комм
Поделиться:

cURL как альтернатива функции file_get_contents в PHP

Функция file_get_contents в PHP, при следующем ее использовании:

<?php

	$get_page = file_get_contents("https://www.pandoge.com");

	echo $get_page;

?>

поможет вам вернуть информацию об указанном сайте или файле. При парсинге (получении) информации таким способом с других сайтов вы можете не получить желаемый результат ввиду фильтрации сомнительных запросов, ведь через file_get_contents вы не отдаете никаких внятных заголовков к обращаемому сервису.

Чтобы исправить это и получить нужную информацию, и существует cURL. Он умеет и отдавать заголовки (включая агент браузера), и переходить по возможным редиректам.

Чтобы не быть многословным – функция для получения данных выглядит так:

function file_get_contents_alt($url) {
	
	$ch = curl_init();

	curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER["HTTP_USER_AGENT"]);
	curl_setopt($ch, CURLOPT_AUTOREFERER, TRUE);
	curl_setopt($ch, CURLOPT_HEADER, 0);
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
	curl_setopt($ch, CURLOPT_URL, $url);
	curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);       

	$data = curl_exec($ch);

	curl_close($ch);

	return $data;

}

Ее вы вставляете сразу после <?php в вашем скрипте, а использование следующее:

echo file_get_contents_alt("https://www.pandoge.com");

Получаемые данные можно сразу не выводить, а, например, присвоить к переменной для дальнейшей их обработки.

«Pandoge» - помощник веб-мастера
3
комментария

Как сюда приделать POST данные и header's ?

  • 0

Рамиль Сафиуллин, для POST попробуйте добавить строки:

curl_setopt($ch, CURLOPT_POST, 1);

curl_setopt($ch, CURLOPT_POSTFIELDS, "post_one=value_1&post_two=value_2");

"post_one=value_1&post_two=value_2" - переменные и их значения.

Для настройки header, пробуйте нечто подобное:

$headers = [

'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',

'Accept-Encoding: gzip, deflate',

'Cache-Control: no-cache',

'Content-Type: application/x-www-form-urlencoded; charset=utf-8',

'Referer: https://www.pandoge.com',

'User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:28.0) Gecko/20100101 Firefox/28.0',

'X-MicrosoftAjax: Delta=true'

];

curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

  • 0

Спасибо, очень помогло! И сайт хороший)

  • 1
Гостям запрещено участвовать в обсуждениях сайта. Авторизуйтесь, чтобы расширить привилегии гостевого посещения и получить необходимую помощь от сообщества Pandoge.
Подняться наверх