Как стать автором
Обновить

Некоторые функции, которые я использую в своих проектах

Время на прочтение4 мин
Количество просмотров2.4K
Доброго времени суток, Под катом предлагаю Вам ознакомиться с функциями на PHP, которые я использую в большинстве своих проектов. В статье мы получим погоду для любого города мира при помощи Google, получим Whois и favicon домена, количество ретвитов определенной страницы и сделаем генератор ссылок на профили в твиттере, сделаем скриншот сайта, соберем css в 1 файл как у яндекса, распакуем zip и преобразуем картинку в ASCII-код.

Прогноз погоды через 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>';  
		}   
	}   
}   
?>
Теги:
Хабы:
+9
Комментарии22

Публикации

Изменить настройки темы

Истории

Работа

PHP программист
162 вакансии

Ближайшие события

Weekend Offer в AliExpress
Дата20 – 21 апреля
Время10:00 – 20:00
Место
Онлайн
Конференция «Я.Железо»
Дата18 мая
Время14:00 – 23:59
Место
МоскваОнлайн