Наличие правильного фрагмента кода в нужное время, безусловно, может быть спасением для веб-разработчиков. Сегодня я собрал 10 действительно потрясающих фрагментов кода PHP, которые, я надеюсь, будут очень полезны в ваших будущих разработках.
Супер простое кеширование страниц
Если ваш проект не основан на CMS или фреймворке, может быть хорошей идеей внедрить простую систему кэширования на ваших страницах. Следующий фрагмент кода очень прост, но хорошо работает для небольших сайтов.
<?php // define the path and name of cached file $cachefile = 'cached-files/'.date('M-d-Y').'.php'; // define how long we want to keep the file in seconds. I set mine to 5 hours. $cachetime = 18000; // Check if the cached file is still fresh. If it is, serve it up and exit. if (file_exists($cachefile) && time() - $cachetime < filemtime($cachefile)) { include($cachefile); exit; } // if there is either no file OR the file to too old, render the page and capture the HTML. ob_start(); ?> <html> output all your html here. </html> <?php // We're done! Save the cached content to a file $fp = fopen($cachefile, 'w'); fwrite($fp, ob_get_contents()); fclose($fp); // finally send browser output ob_end_flush(); ?>
Рассчитать расстояния в PHP
Вот очень удобная функция, которая вычисляет расстояние от точки A до точки B, используя широты и долготы. Функция может возвращать расстояние в милях, километрах или морских милях.
function distance($lat1, $lon1, $lat2, $lon2, $unit) { $theta = $lon1 - $lon2; $dist = sin(deg2rad($lat1)) * sin(deg2rad($lat2)) + cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * cos(deg2rad($theta)); $dist = acos($dist); $dist = rad2deg($dist); $miles = $dist * 60 * 1.1515; $unit = strtoupper($unit); if ($unit == "K") { return ($miles * 1.609344); } else if ($unit == "N") { return ($miles * 0.8684); } else { return $miles; } }
Использование:
echo distance(32.9697, -96.80322, 29.46786, -98.53506, "k")." kilometers";
Преобразовать секунды во время (годы, месяцы, дни, часы…)
Эта полезная функция преобразует время в секундах во время в годах, месяцах, неделях, днях и т. Д.
function Sec2Time($time){ if(is_numeric($time)){ $value = array( "years" => 0, "days" => 0, "hours" => 0, "minutes" => 0, "seconds" => 0, ); if($time >= 31556926){ $value["years"] = floor($time/31556926); $time = ($time%31556926); } if($time >= 86400){ $value["days"] = floor($time/86400); $time = ($time%86400); } if($time >= 3600){ $value["hours"] = floor($time/3600); $time = ($time%3600); } if($time >= 60){ $value["minutes"] = floor($time/60); $time = ($time%60); } $value["seconds"] = floor($time); return (array) $value; }else{ return (bool) FALSE; } }
» Кредиты
Принудительно загрузить файл
Некоторые файлы, такие как mp3, обычно воспроизводятся через браузер клиента. Если вы предпочитаете принудительную загрузку таких файлов, это не проблема: следующий фрагмент кода выполнит эту работу правильно.
function downloadFile($file){ $file_name = $file; $mime = 'application/force-download'; header('Pragma: public'); // required header('Expires: 0'); // no cache header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Cache-Control: private',false); header('Content-Type: '.$mime); header('Content-Disposition: attachment; filename="'.basename($file_name).'"'); header('Content-Transfer-Encoding: binary'); header('Connection: close'); readfile($file_name); // push it out exit(); }
Получить текущую погоду с помощью Google API
Хотите узнать сегодняшнюю погоду? Этот фрагмент даст вам знать всего за 3 строки кода. Единственное, что вам нужно сделать, это заменить адрес на нужный адрес в строке 1.
$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 PHP. Обратите внимание, что для работы этого кода на вашем сервере должна быть установлена команда whois unix.
$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"; }
Получить широту и долготу от адреса
В связи с популярностью API Карт Google, разработчикам часто приходится определять широту и долготу конкретного места. Эта очень полезная функция принимает адрес в качестве параметра и возвращает массив данных, содержащих широту и долготу.
function getLatLong($address){ if (!is_string($address))die("All Addresses must be passed as a string"); $_url = sprintf('http://maps.google.com/maps?output=js&q=%s',rawurlencode($address)); $_result = false; if($_result = file_get_contents($_url)) { if(strpos($_result,'errortips') > 1 || strpos($_result,'Did you mean:') !== false) return false; preg_match('!center:\s*{lat:\s*(-?\d+\.\d+),lng:\s*(-?\d+\.\d+)}!U', $_result, $_match); $_coords['lat'] = $_match[1]; $_coords['long'] = $_match[2]; } return $_coords; }
Получить favicon домена с помощью PHP и Google
В наши дни многие веб-сайты или веб-приложения используют значки других веб-сайтов. Отображать значки избранного на своем сайте довольно просто, используя Google и немного PHP.
function get_favicon($url){ $url = str_replace("http://",'',$url); return "http://www.google.com/s2/favicons?domain=".$url; }
Рассчитать сборы Paypal
Ах, сборы Paypal. Каждый, кто когда-либо пользовался популярным сервисом онлайн-платежей, должен был платить за свои услуги. Так как насчет функции PHP, которая позволяет легко рассчитать комиссию за определенную сумму?
function paypalFees($sub_total, $round_fee) { // Set Fee Rate Variables $fee_percent = '3.4'; // Paypal's percentage rate per transaction (3.4% in UK) $fee_cash = '0.20'; // Paypal's set cash amount per transaction (£0.20 in UK) // Calculate Fees $paypal_fee = ((($sub_total / 100) * $fee_percent) + $fee_cash); if ($round_fee == true) { $paypal_fee = ceil($paypal_fee); } // Calculate Grand Total $grand_total = ($sub_total + $paypal_fee); // Tidy Up Numbers $sub_total = number_format($sub_total, 2, '.', ','); $paypal_fee = number_format($paypal_fee, 2, '.', ','); $grand_total = number_format($grand_total, 2, '.', ','); // Return Array return array('grand_total'=>$grand_total, 'paypal_fee'=>$paypal_fee, 'sub_total'=>$sub_total); }
(Последний фрагмент был удален из-за ошибки, извините)