9 полезных php сниппетов

  • Для просмотра чата и остального функционала вам нужно авторизоваться или пройти регистрацию!
A

>A1RN1kE<

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

Простое кэширование страниц

Когда ваш проект не базируется на каком-то CMS или фрэймворке, то часто приходится самим кэшировать страницы. Следующий фрагмент кода прост до безобразия, но работает эффективно.
Код:
01 
14 
15 output all your html here.
16 
17

Расчёт дистанции PHP

Следующая функция довольно таки часто необходима в том или ином скрипте. Она вычисляет расстояние между пунктом A и B, используя долготу и ширину. Возвращает результат в милях, километрах, или в морских милях в зависимости от параметров.
Код:
01 function distance($lat1, $lon1, $lat2, $lon2, $unit) {
02
03 $theta = $lon1 - $lon2;
04 $dist = sin(deg2rad($lat1)) * sin(deg2rad($lat2)) + cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * cos(deg2rad($theta));
05 $dist = acos($dist);
06 $dist = rad2deg($dist);
07 $miles = $dist * 60 * 1.1515;
08 $unit = strtoupper($unit);
09
10 if ($unit == "K") {
11 return ($miles * 1.609344);
12 } else if ($unit == "N") {
13 return ($miles * 0.8684);
14 } else {
15 return $miles;
16 }
17 }

Использование:1 echo distance(32.9697, -96.80322, 29.46786, -98.53506, "k")." kilometers";

Конвертируем секунды во время (год, месяц, день, час…)

Теперь рассмотрим функцию, которая конвертирует секунды в другие временные форматы:
Код:
01 function Sec2Time($time){
02 if(is_numeric($time)){
03 $value = array(
04 "years" => 0, "days" => 0, "hours" => 0,
05 "minutes" => 0, "seconds" => 0,
06 );
07 if($time >= 31556926){
08 $value["years"] = floor($time/31556926);
09 $time = ($time%31556926);
10 }
11 if($time >= 86400){
12 $value["days"] = floor($time/86400);
13 $time = ($time%86400);
14 }
15 if($time >= 3600){
16 $value["hours"] = floor($time/3600);
17 $time = ($time%3600);
18 }
19 if($time >= 60){
20 $value["minutes"] = floor($time/60);
21 $time = ($time%60);
22 }
23 $value["seconds"] = floor($time);
24 return (array) $value;
25 }else{
26 return (bool) FALSE;
27 }
28 }

Загрузка файла

Часто такие файлы, как mp3, открываются в различных плеерах в самих веб браузерах. Но если вам надо дать файл на скачку, то нет проблем: используйте следующий код.
Код:
01 function downloadFile($file){
02 $file_name = $file;
03 $mime = 'application/force-download';
04 header('Pragma: public');
05 header('Expires: 0');
06 header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
07 header('Cache-Control: private',false);
08 header('Content-Type: '.$mime);
09 header('Content-Disposition: attachment; filename="'.basename($file_name).'"');
10 header('Content-Transfer-Encoding: binary');
11 header('Connection: close');
12 readfile($file_name);
13 exit();
14 }

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

Вы знаете какая сегодня погода? Эти три строки кода помогут вам узнать это. Всё что вам нужно сделать, так это заменить ADDRESS на ваш адрес в первой строчке.
Код:
1 $xml = simplexml_load_file('http://www.google.com/ig/api?weather=ADDRESS');
2 $information = $xml->xpath("/xml_api_reply/weather/current_conditions/condition");
3 echo $information[0]->attributes();

Простой PHP whois

Сервис Whois очень полезен для тех, кто хочет разузнать различную информацию о том или ином домене: хозяин, время создания, регистрации и т.д. Используя PHP команду whois из unix очень просто написать подобную функцию. Учтите то, что команда whois должна поддерживаться вашим веб сервером иначе ничего не выйдет.
Код:
01 $domains = array('home.pl', 'w3c.org');
02
03 function creation_date($domain) {
04 $lines = explode("\n", `whois $domain`);
05 foreach($lines as $line) {
06 if(strpos(strtolower($line), 'created') !== false) {
07 return $line;
08 }
09 }
10
11 return false;
12 }
13
14 foreach($domains as $d) {
15 echo creation_date($d) . "\n";
16 }

Получаем координаты по заданному адресу

Благодаря Google Maps API, у разработчиков появилась возможность определять координаты места по адресу нахождения интересующего объекта. Следующая функция принимает адрес и возвращает массив содержащий широту и долготу.
Код:
01 function getLatLong($address){
02 if (!is_string($address))die("All Addresses must be passed as a string");
03 $_url = sprintf('http://maps.google.com/maps?output=js&q=%s',rawurlencode($address));
04 $_result = false;
05 if($_result = file_get_contents($_url)) {
06 if(strpos($_result,'errortips') > 1 || strpos($_result,'Did you mean:') !== false) return false;
07 preg_match('!center:\s*{lat:\s*(-?\d+\.\d+),lng:\s*(-?\d+\.\d+)}!U', $_result, $_match);
08 $_coords['lat'] = $_match[1];
09 $_coords['long'] = $_match[2];
10 }
11 return $_coords;
12 }

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

В наши дни, веб сайты часто используют сторонние favicon. Для решения подобной задачи нам поможет Google и PHP.
Код:
1 function get_favicon($url){
2 $url = str_replace("http://",'',$url);
3 return "http://www.google.com/s2/favicons?domain=".$url;
4 }

Вычисляем комиссию Paypal

Ох уж эти комиссии Paypal. Все, кто когда либо имел дело с этой системой знает что это такое. Вашему вниманию представляю код, который вычислит их для вас. Ввести нужно только сумму:
Код:
01 function paypalFees($sub_total, $round_fee) {
02
03 // Начальные параметры
04 $fee_percent = '3.4'; // процент за транзакцию (3.4% in UK)
05 $fee_cash = '0.20'; // сумма за транзакцию (£0.20 in UK)
06
07 // Вычисление комиссии
08 $paypal_fee = ((($sub_total / 100) * $fee_percent) + $fee_cash);
09
10 if ($round_fee == true) {
11 $paypal_fee = ceil($paypal_fee);
12 }
13
14 // вычисляем Grand Total
15 $grand_total = ($sub_total + $paypal_fee);
16
17 // перевод в цифры
18 $sub_total = number_format($sub_total, 2, '.', ',');
19 $paypal_fee = number_format($paypal_fee, 2, '.', ',');
20 $grand_total = number_format($grand_total, 2, '.', ',');
21
22 return array('grand_total'=>$grand_total, 'paypal_fee'=>$paypal_fee, 'sub_total'=>$sub_total);
23 }
Всем спасибо за внимание...
Коды созданы в ознакомительных целях..
Автор кода ''Я убью ТеБя:DD''
 

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.