Архивы: PHP

Работа с файлами в PHP. Набор полезных функций.

Набор небольших утилит для работы с файловой системой.
Читать далее »

Качаем с YouTube

$s = file_get_contents('http://www.youtube.com/v/v56o5CogS8o'); // ссылка на ролик

preg_match('/<embed.+?flashvars="(.+?)"/',$s,$s);
parse_str(html_entity_decode($s[1]), $a);
$a = explode(',',$a['url_encoded_fmt_stream_map']);

foreach ($a as $b) {
     parse_str($b,$s);
     print_r($s);
}

Автоматическая загрузка файлов на Яндекс.Диск (habr)

<?php
print uploadFile(ваш_логин, ваш_пароль, путь_к_файлу)."\n";

function uploadFile($login, $password, $filename)
{
$cookie_file = 'cookie.txt';
$user_agent = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6';

// логинимся в систему
$ch = curl_init('https://passport.yandex.ru/passport?mode=auth');

$fields = array();
$fields[] = "login=$login";
$fields[] = "passwd=$password";
$fields[] = "twoweeks=yes";
curl_setopt($ch, CURLOPT_POSTFIELDS, implode('&', $fields));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,  0);
curl_setopt($ch, CURLOPT_POST, 1);
$result = curl_exec($ch);
$info = curl_getinfo($ch);

if ($info['http_code'] != 200) return false;

// запрашиваем сервер для загрузки файла
$url = 'http://narod.yandex.ru/disk/getstorage/?rnd=' . (mt_rand( 0, 777777) + 777777);

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST,  0);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);
$result = curl_exec($ch);
$info = curl_getinfo($ch);

if (preg_match('/"url":"(.*?)", "hash":"(.*?)", "purl":"(.*?)"/', $result, $m)) {
$upload_url = $m[1];
$hash = $m[2];
$purl = $m[3];
} else {
return false;
}

// загружаем файл на сервер
$url = $upload_url . '?tid=' . $hash;
$fields = array();
$fields['file'] = '@' . $filename;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_REFERER, 'http://narod.yandex.ru/');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
$result = curl_exec($ch);
$info = curl_getinfo($ch);

if ($info['http_code'] != 200) return false;

//   print_r($info);
// проверяем прогресс бар
$url = $purl . '?tid=' . $hash . '&rnd=' . (mt_rand( 0, 777777) + 777777);

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST,  0);
$result = curl_exec($ch);

if (!preg_match('/"status": "done"/', $result, $m)) {
return false;
}

// переходим на страницу и определяем ссылку
$url = 'http://narod.yandex.ru/disk/last/';
curl_setopt($ch, CURLOPT_URL, $url);
$result = curl_exec($ch);
curl_close($ch);

if (preg_match('/<span class=\'b\-fname\'><a href="(.*?)">/', $result, $m)) {
$fileURL = trim($m[1]);
return $fileURL;
}

return false;
}
?>

Создание скриншота сайта

function screen($url, $razr, $razm, $form) {
    $toapi="http://mini.s-shot.ru/".$razr."/".$razm."/".$form."/?".$url;
    $scim=file_get_contents($toapi);
    file_put_contents("screen.".$form, $scim);
}

Получим количество ретвитов определенной страницы на PHP

Хотите использовать свой счетчик ретвитов определенной страницы? Это не сложно реализовать на PHP при помощи Tweetmeme API.

function tweetCount($url) {
    $content = file_get_contents("http://api.tweetmeme.com/url_info?url=".$url);
    $element = new SimpleXmlElement($content);
    $retweets = $element->story->url_count;
    if($retweets) {
        return $retweets;
    } else {
        return 0;
    }
}

Получаем favicon используя PHP и Google

В наши дни, веб-сайты часто используют сторонние favicon. Для решения подобной задачи нам поможет Google и PHP.

function get_favicon($url) {
    $url = urlencode(str_replace("http://","",$url));
    return 'http://www.google.com/s2/favicons?domain='.$url;
}

Прогноз погоды через Google API

Вы знаете какая сегодня погода? Эти три строки кода помогут вам узнать это. Всё что вам нужно сделать, так это заменить ADDRESS на ваш адрес в первой строчке.

$xml = simplexml_load_file('http://www.google.com/ig/api?weather=ADDRESS');
$information = $xml->xpath("/xml_api_reply/weather/current_conditions/condition");
echo $information[0]->attributes();

Получение времени с NTP серверов на PHP

time

NTP это протокол для получения текущего времени с серверов времени.

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

Этот класс может получить доступ к серверу NTP и получить текущее время для использования в ваших PHP-приложениях.
Читать далее »

Проверка IP адреса в сети Tor

tor

Класс посылает запрос на сервер TOR в список DNS, чтобы определить используется ли данный IP в сети Tor.

По умолчанию класс проверяет IP-адрес текущего пользователя.
Читать далее »

Расширенная обработка изображений средствами PHP

gdlogobig

В PHP есть замечательная библиотека GD для примитивной обработки несложной графики. Но библиотека предоставляет лишь базовые функции обработки изображений.

Представляю вашему вниманию класс, который реализует более расширеные функции для работы с изображениями.

Автор класса 29 летний Артур Гранижевский из Польши.

Лицензия: LGPL
Читать далее »