CURL примеры: 8 изумительных примеров cURL в PHP

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

Проверка сайта на доступность

Как узнать, доступен ли определенный сайт? На помощь придет cURL. Этот скрипт можно использовать по расписанию CRON, для мониторинга за вашими сайтами.

Это пример, вы можете автоматизировать прописывание URL в 3 строке скрипта. Очень простой и полезный скрипт для мониторинга за сайтами.

<?php

       if (isDomainAvailible('http://sitear.ru'))
       {
               echo "Домен доступен, пример работает!";
       }
       else
       {
               echo "Упс, домен не доступен.";
       }

       //возвращает true, если домен доступен, false если нет
       function isDomainAvailible($domain)
       {
               //проверка на валидность урла
               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;
       }
?>

cURL аналог функции file_get_contents()

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

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

        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //Set curl to return the data instead of printing it to the browser.
        curl_setopt($ch, CURLOPT_URL, $url);

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

        return $data;
}

Получение последнего Twitter статуса

Используя PHP и cURL, очень просто получить последний статуй из Твиттера конкретного пользователя. Давайте посмотрим пример:

function get_status($twitter_id, $hyperlinks = true) {
    $c = curl_init();
    curl_setopt($c, CURLOPT_URL, "http://twitter.com/statuses/user_timeline/$twitter_id.xml?count=1");
    curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
    $src = curl_exec($c);
    curl_close($c);
    preg_match('/<text>(.*)<\/text>/', $src, $m);
    $status = htmlentities($m[1]);
    if( $hyperlinks ) $status = ereg_replace("[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]", '<a href="%5C%22%5C%5C0%5C%22">\\0</a>', $status);
    return($status);
}

Эта функция еще проще в использовании:

echo get_status('sitearchitector');

Twitter: проверка на дружбу между двумя пользователями

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

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;
}

/* gets the match */
function get_match($regex,$content) {
        preg_match($regex,$content,$matches);
        return $matches[1];
}

/* persons to test */
$person1 = 'sitearchitector';
$person2 = 'catswhocode';

/* send request to twitter */
$url = 'https://api.twitter.com/1/friendships/exist';
$format = 'xml';

/* check */
$persons12 = make_request($url.'.'.$format.'?user_a='.$person1.'&user_b='.$person2);
$result = get_match('/<friends>(.*)<\/friends>/isU',$persons12);
echo $result; // returns "true" or "false"

Пример сохранения картинок со страницы с помощью cURL

Ниже несколько функций, которые очень удобны: просто дайте скрипту url страницы и он сохранит все картинки со страницы на ваш сервер.

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;
}

Конвертация курса валют с помощью cURL и Google

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

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);
}

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

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

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";
}

FTP загрузка с помощью cURL

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

// путь к папке на сервере
$file = fopen("/path/to/file", "r");

// url для доступа
$url = "ftp://username:[email protected]: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);

Вот 8 примеров работы с cURL на PHP. Надеюсь, они были полезны для вас. Если имеете что-то дополнить, пишите в комментарии к статье.



Дальше: Горизонтальное меню на CSS


Дискуссия по теме     2 Комментария 
Добавить комментарий
Сэн 17.04.2012 в 09:33
(ошибка)последний статуй из Твиттера(ошибка) спасибо за статью
Заур 09.02.2012 в 16:14
класно
Просмотров: 33233
Страхование КАСКО
карта банка
ндфл
усн
Оформление доверенности
страхование ипотеки
esim
осаго
ВЗР страхование
кредитная карта
Cialis barato Viagra Contrareembolso Cialis 5 mg precio mejores farmacias para comprar Viagra reacciones adversas de Cialis Reduslim cómo tomar soluciones para la impotencia Sildenafil Comprare Cialis 5 mg Giornaliero online in Italia Effetti indesiderati del Cialis 5 mg Acquista Cialis 20mg Cialis originale in vendita In Svizzera si compra il Viagra senza ricetta Cialis 10mg online Acquista Viagra in farmacia Offerta Cialis 5mg Spedra Avanafil in vendita online Acquista Viagra in Svizzera senza prescrizione авиатор спрайб Consegna a domicilio di Cialis 5 mg Effetti collaterali di Cialis 5 mg Consegna a domicilio di Cialis 20mg Acquista Cialis originale generico in Svizzera Consegna a domicilio di Viagra senza ricetta in Svizzera Compra Cialis 10mg Consegna a domicilio di Viagra in farmacia online Sconto Cialis 5mg Comprar Reduslim por internet Comprare Spedra Avanafil senza ricetta online Dove comprare il Viagra in Svizzera Compra Cialis Comprar online Viagra Contrareembolso Dónde encontrar Cialis 5 mg al mejor precio Viagra sin receta Cialis 5 mg efectos secundarios graves Reduslim comprar en línea Disfuncion Erectil tadalafilo avanafil prezzo cialis 20 mg prezzo cialis effetti benefici cialis 10 mg Reduslim Kaufen pulse x coin price