8 примеров использования cURL вместе с PHP

cURL и его расширение для PHP libcURL являются очень полезными инструментами при решении таких задач, как имитация веб браузера, отправка форм или регистрация на веб сервисе. В данном уроке мы рассмотрим несколько интересных применений cURL совместно с PHP. 

1. Проверяем доступность определённого веб сайта



Как узнать, доступен ли определённый веб сайт? cURL поможет ответить на данный вопрос. Данный скрипт можно использовать совместно с планировщиком для мониторинга сайта.

Замените URL в строке 3 на тот, который вам нужен. Скопируйте код на свою страницу, и станет известно, доступен ли указанный сайт.

Code

  if (isDomainAvailible('http://get-element.3dn.ru'))
  {
  echo "Работает и готов отвечать на запросы!";
  }
  else
  {
  echo "Ой, сайт не доступен.";
  }

  //Возвращает true, если домен доступен
  function isDomainAvailible($domain)
  {
  //Проверка на правильность URL  
  if(!filter_var($domain, FILTER_VALIDATE_URL))
  {
  return false;
  }

  //Инициализация curl
  $curlInit = curl_init($domain);
  curl_setopt($curlInit,CURLOPT_CONNECTTIMEOUT,10);
  curl_setopt($curlInit,CURLOPT_HEADER,true);
  curl_setopt($curlInit,CURLOPT_NOBODY,true);
  curl_setopt($curlInit,CURLOPT_RETURNTRANSFER,true);

  //Получаем ответ
  $response = curl_exec($curlInit);

  curl_close($curlInit);

  if ($response) return true;

  return false;
  }
?>


2. Замена cURL для функции file_get_contents()



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

Code
function file_get_contents_curl($url) {
  $ch = curl_init();

  curl_setopt($ch, CURLOPT_HEADER, 0);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //Устанавливаем параметр, чтобы curl возвращал данные, вместо того, чтобы выводить их в браузер.
  curl_setopt($ch, CURLOPT_URL, $url);

  $data = curl_exec($ch);
  curl_close($ch);

  return $data;
}


Использовать функцию очень просто:

Code
echo get_status('catswhocode');


4. Twitter: проверяем отношения между двумя пользователями


Если вам нужно узнать, читает ли ваши твиты определенный пользователь, то можно задействовать API Twitter. Данный скрипт выводит true, если два пользователя, указанные на строчках 18 и 19, находятся в дружеских отношениях на Twitter. В противном случае возвращается false.

Code
function make_request($url) {
  $ch = curl_init();
  curl_setopt($ch,CURLOPT_URL,$url);
  curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
  $result = curl_exec($ch);
  curl_close($ch);
  return $result;
}

/* Получаем соответствие */
function get_match($regex,$content) {
  preg_match($regex,$content,$matches);
  return $matches[1];
}

/* Персоны для проверки */
$person1 = 'phpsnippets';
$person2 = 'catswhocode';

/* Отправляем запрос на twitter */
$url = 'https://api.twitter.com/1/friendships/exist';
$format = 'xml';

/* Проверка */
$persons12 = make_request($url.'.'.$format.'?user_a='.$person1.'&user_b='.$person2);
$result = get_match('/<friends>(.*)<\/friends>/isU',$persons12);
echo $result; // Возвращаем "true" или "false"


5. Загружаем и сохраняем изображения со страницы с помощью cURL



Данная функция может быть очень полезна: задаем ей URL страницы и она сохраняет все изображения с нее на вашем сервере.

Code
function getImages($html) {
  $matches = array();
  $regex = '~http://somedomain.com/images/(.*?)\.jpg~i';
  preg_match_all($regex, $html, $matches);
  foreach ($matches[1] as $img) {
  saveImg($img);
  }
}

function saveImg($name) {
  $url = 'http://somedomain.com/images/'.$name.'.jpg';
  $data = get_data($url);
  file_put_contents('photos/'.$name.'.jpg', $data);
}

$i = 1;
$l = 101;

while ($i < $l) {
  $html = get_data('http://somedomain.com/id/'.$i.'/');
  getImages($html);
  $i += 1;
}


6. Конвертируем валюту с помощью cURl и Google



Пересчет валюты достаточно простое дело, но курсы достаточно часто изменяются, поэтому приходится использовать сервисы, подобные Google, для получения текущих значений курса пересчета. Функция currency() получает 3 параметра: исходная валюта, целевая валюта и сумма.

Code
function currency($from_Currency,$to_Currency,$amount) {
  $amount = urlencode($amount);
  $from_Currency = urlencode($from_Currency);
  $to_Currency = urlencode($to_Currency);
  $url = "http://www.google.com/ig/calculator?hl=en&q=$amount$from_Currency=?$to_Currency";
  $ch = curl_init();
  $timeout = 0;
  curl_setopt ($ch, CURLOPT_URL, $url);
  curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($ch, CURLOPT_USERAGENT , "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1)");
  curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
  $rawdata = curl_exec($ch);
  curl_close($ch);
  $data = explode('"', $rawdata);
  $data = explode(' ', $data['3']);
  $var = $data['0'];
  return round($var,2);
}


7. Получаем информацию о размере файла с помощью cURL



Как определить размер определенного файла, расположенного на другом сервере? Поможет следующая функция. Она получает 3 параметра: URL файла, и (если требуется) имя пользователя и пароль.

Code
function remote_filesize($url, $user = "", $pw = ""){
  ob_start();
  $ch = curl_init($url);
  curl_setopt($ch, CURLOPT_HEADER, 1);
  curl_setopt($ch, CURLOPT_NOBODY, 1);

  if(!empty($user) && !empty($pw))
  {
  $headers = array('Authorization: Basic ' . base64_encode("$user:$pw"));
  curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
  }

  $ok = curl_exec($ch);
  curl_close($ch);
  $head = ob_get_contents();
  ob_end_clean();

  $regex = '/Content-Length:\s([0-9].+?)\s/';
  $count = preg_match($regex, $head, $matches);

  return isset($matches[1]) ? $matches[1] : "unknown";
}


8. Загрузка через FTP с помощью cURL



PHP имеет библиотеку FTP library, но также можно использовать cURL для загрузки файлов на FTP сервер. Вот рабочий пример:

Code
// Открываем файл
$file = fopen("/path/to/file", "r");

// URL содержит большую часть нужной информации
$url = "ftp://username:password@mydomain.com:21/path/to/new/file";

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

// Устанавливаем опции
curl_setopt($ch, CURLOPT_UPLOAD, 1);
curl_setopt($ch, CURLOPT_INFILE, $fp);
curl_setopt($ch, CURLOPT_INFILESIZE, filesize("/path/to/file"));

// Устанавливаем режим ASCII (то есть - файл текстовой)
curl_setopt($ch, CURLOPT_FTPASCII, 1);

$output = curl_exec($ch);
curl_close($ch);

  • FalleN

  • 2013

  • 1

  • 0
Теги: cURL, php

Ссылки на статью:

Похожие статьи: