Доброго времени суток, Под катом предлагаю Вам ознакомиться с функциями на PHP, которые я использую в большинстве своих проектов. В статье мы получим погоду для любого города мира при помощи Google, получим Whois и favicon домена, количество ретвитов определенной страницы и сделаем генератор ссылок на профили в твиттере, сделаем скриншот сайта, соберем css в 1 файл как у яндекса, распакуем zip и преобразуем картинку в ASCII-код.
Вы знаете какая сегодня погода? Эти три строки кода помогут вам узнать это. Всё что вам нужно сделать, так это заменить ADDRESS на ваш адрес в первой строчке.
Сервис Whois очень полезен для тех, кто хочет разузнать различную информацию о том или ином домене: хозяин, время создания, регистрации и т.д. Используя PHP команду whois из unix очень просто написать подобную функцию. Учтите то, что команда whois должна поддерживаться вашим веб сервером иначе ничего не выйдет.
В наши дни, веб-сайты часто используют сторонние favicon. Для решения подобной задачи нам поможет Google и PHP.
Спасибо hedgehog
Хотите использовать свой счетчик ретвитов определенной страницы? Это не сложно реализовать на PHP при помощи Tweetmeme API.
Вызов функции:
Если Вы используете несколько CSS-файлов на своём сайте, они увеличивают время загрузки всего сайта.
С помощью данного скрипта Вы можете сжать ваши стили.
И вызываем нашу функцию
Прогноз погоды через 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();
Простой PHP whois
Сервис Whois очень полезен для тех, кто хочет разузнать различную информацию о том или ином домене: хозяин, время создания, регистрации и т.д. Используя PHP команду whois из unix очень просто написать подобную функцию. Учтите то, что команда whois должна поддерживаться вашим веб сервером иначе ничего не выйдет.
$domains = array('home.pl', 'w3c.org');
function creation_date($domain) {
$lines = explode("\n", `whois $domain`);
foreach($lines as $line) {
if(strpos(strtolower($line), 'created') !== false) {
return $line;
}
}
return false;
}
foreach($domains as $d) {
echo creation_date($d) . "\n";
}
Получаем 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;
}
Спасибо hedgehog
Получим количество ретвитов определенной страницы на 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;
}
}
Текст формата "@nick" преобразуем в ссылку (как у твиттера)
function parseTwitterNicks($str, $allowed = 'all', $format = 'default', $toArray = false){
preg_match_all('~@([a-z0-9-_]+)~is', $str, $match);
if($format == 'default')
$format = 'profile.php?user={nick}';
if(!preg_match('~\{nick\}~', $format))
$format = $format . '{nick}';
if(empty($match[1]))
return ($toArray ? array() : $str);
$found = array();
foreach($match[1] as $nick) {
if(!empty($allowed) && $allowed != 'all') {
if(is_array($allowed)) {
if(!in_array($nick, $allowed))
continue;
}
}
$url = str_replace('{nick}', $nick, $format);
$str = str_replace('@' . $nick, '<a href="' . $url . '" title="' . $nick . '">@' . $nick . '</a>', $str);
$found[] = $nick;
}
return ($toArray ? $found : $str);
}
Создание скриншота сайта
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);
}
Вызов функции:
screen("http://habr.ru", "1024x768", "600", "jpeg");
Собираем несколько CSS-файлов в один
Если Вы используете несколько CSS-файлов на своём сайте, они увеличивают время загрузки всего сайта.
С помощью данного скрипта Вы можете сжать ваши стили.
header('Content-type: text/css');
ob_start("compress");
function compress($buffer) {
$buffer = preg_replace('!/\*[^*]*\*+([^/][^*]*\*+)*/!', '', $buffer);
$buffer = str_replace(array("\r\n", "\r", "\n", "\t", ' ', ' ', ' '), '', $buffer);
return $buffer;
}
include('style1.css');
include('style2.css');
include('template_style1.css');
include('template_style2.css');
include('print.css');
ob_end_flush();
Распакуем zip-архив на сервере
function unzip($location,$newLocation){
if(exec("unzip $location",$arr)) {
mkdir($newLocation);
for($i = 1;$i< count($arr);$i++) {
$file = trim(preg_replace("~inflating: ~","",$arr[$i]));
copy($location.'/'.$file,$newLocation.'/'.$file);
unlink($location.'/'.$file);
}
return TRUE;
} else {
return FALSE;
}
}
И вызываем нашу функцию
if(unzip('uploads/test.zip','uploads/unziped/test'))
echo 'Файл распакован';
else
echo 'Ошибка';
Делаем ASCII-код из любого изображения JPG
<style>body { line-height:1px;font-size:1px; }</style>
<?php
function getext($filename) {
$pos = strrpos($filename,'.');
$str = substr($filename, $pos);
return $str;
}
$image = 'image.jpg';
$ext = getext($image);
if($ext == ".jpg") {
$img = ImageCreateFromJpeg($image);
} else {
echo 'Необходимо использовать JPG';
}
$width = imagesx($img);
$height = imagesy($img);
for($h=0;$h<$height;$h++) {
for($w=0;$w<=$width;$w++) {
$rgb = ImageColorAt($img, $w, $h);
$r = ($rgb >> 16) & 0xFF;
$g = ($rgb >> 8) & 0xFF;
$b = $rgb & 0xFF;
if($w == $width) {
echo '<br>';
} else {
echo '<span style="color:rgb('.$r.','.$g.','.$b.');">#</span>';
}
}
}
?>