CURL это сокращение от Client Uniform Resource Locators что в переводе означает Клиент Единого Указателя Ресурсов, не будем вдаваться в подробности кем и когда он был придуман (история создания, я думаю, тут не к чему) Для чего он нужен я разъясню ниже. И так, начнем:
Эта статья является продолжением нашей темы раздела РНР, поэтому если Вы не читали предыдущие статьи можете с ними ознакомиться перейдя в соответствующий раздел (Ссылка)
Функция file_get_contents() это конечно хорошо, но не всегда удается получить web страницу этой функцией, поэтому мы будем использовать curl. Для этого для начала откроем наш файл конфигурации php.ini, найдем там и раскоментируем строки extension_dir = «ext» и extension=curl для этого просто уберем «;» в начале строки, после чего сохраним и закроем, теперь мы можем пользоваться библиотекой curl.
Давайте теперь возьмем наш парсер из предыдущей статьи (Ссылка) и заменим функцию file_get_contents()
<?php require 'libs/phpQuery.php'; $ch = curl_init('http://www.banki.ru/products/currency/cash/moskva/'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $doc = curl_exec($ch); curl_close($ch); $query = phpQuery::newDocument($doc); $usd_ru = $query->find('div.currency-table__large-text:eq(0)')->text(); echo "USD RU = ".$usd_ru."\n"; ?>
но так будет не очень удобно если нам нужно будет получить не одну страницу, а несколько, поэтому лучше сделать функцию, которая будет принимать URL и возвращать страницу, а потом уже обращаться к ней каждый раз когда будет нужно.
<?php require 'libs/phpQuery.php'; $doc = curl('http://www.banki.ru/products/currency/cash/moskva/'); $query = phpQuery::newDocument($doc); $usd_ru = $query->find('div.currency-table__large-text:eq(0)')->text(); echo "USD RU = ".$usd_ru."\n"; function curl($url){ $ch = curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $doc = curl_exec($ch); curl_close($ch); return $doc;} ?>
Давайте запустим и проверим
Как видим все работает.
CURL поддерживает такие протоколы как http, https, ftp, gopher, telnet, dict, file, и ldap. CURL также умеет работать с сертификатами HTTPS, посылать запросы к HTTP серверам методами POST и PUT, закачивать файлы по протоколам HTTP и FTP , использовать прокси-серверы, cookies и аутентификацию пользователей. Однако CURL не может загружать сайты целиком, а лишь части его, поэтому его нельзя считать браузером.