cURL, и его PHP расширение libcURL, очень практичный
инструмент для симулирования браузера, заполнения форм или входа на веб
сервисы. cURL позволяет работать с сервисами на расстоянии. Например,
автоматически получать данные, которые доступны только после входа в
аккаунт веб сервиса. Сегодня мы увидим 8 изумительных примеров работы с
cURL в PHP.
Проверка сайта на доступность
Как узнать, доступен ли определенный сайт? На помощь придет cURL. Этот
скрипт можно использовать по расписанию CRON, для мониторинга за вашими
сайтами.
Это пример, вы можете автоматизировать прописывание URL в 3 строке
скрипта. Очень простой и полезный скрипт для мониторинга за сайтами.
if (isDomainAvailible('http:)) { echo "Домен доступен, пример работает!"; } else { echo "Упс, домен не доступен."; } function isDomainAvailible($domain) { if(!filter_var($domain, FILTER_VALIDATE_URL)) { return false; } $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); 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:); 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:]]+:, '<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; } function get_match($regex,$content) { preg_match($regex,$content,$matches); return $matches[1]; } $person1 = 'sitearchitector'; $person2 = 'catswhocode'; $url = 'https:; $format = 'xml'; $persons12 = make_request($url.'.'.$format.'?user_a='.$person1.'&user_b='.$person2); $result = get_match('/<friends>(.*)<\/friends>/isU',$persons12); echo $result;
Пример сохранения картинок со страницы с помощью cURL
Ниже несколько функций, которые очень удобны: просто дайте скрипту url
страницы и он сохранит все картинки со страницы на ваш сервер.
function getImages($html) { $matches = array(); $regex = '~http:; preg_match_all($regex, $html, $matches); foreach ($matches[1] as $img) { saveImg($img); } } function saveImg($name) { $url = 'http:.$name.'.jpg'; $data = get_data($url); file_put_contents('photos/'.$name.'.jpg', $data); } $i = 1; $l = 101; while ($i < $l) { $html = get_data('http:.$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:; $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 = "ftp:; $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")); curl_setopt($ch, CURLOPT_FTPASCII, 1); $output = curl_exec($ch); curl_close($ch);
|