9 супер полезных PHP сниппетов

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

Супер простое кэширование страниц

Когда ваш проект не базируется на каком-то CMS или фрэймворке, то часто приходится самим кэшировать страницы. Следующий фрагмент кода прост до безобразия, но работает эффективно.

<?php
    // определяем имя и путь к файлу с кэшем
    $cachefile = 'cached-files/'.date('M-d-Y').'.php';
    // время хранения. Я поставил 5 часов.
    $cachetime = 18000;
    // Проверяем кэш на «свежесть». Если время ещё не вышло, то подключаем его.
    if (file_exists($cachefile) && time() - $cachetime < filemtime($cachefile)) {
    include($cachefile);
        exit;
    }
    // если время уже прошло, даём загрузиться новому HTML
    ob_start();
?>
    <html>
        output all your html here.
    </html>
<?php
    // создаём новый кэш страницы
    $fp = fopen($cachefile, 'w');
    fwrite($fp, ob_get_contents());
    fclose($fp);
    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');   
    header('Expires: 0');       
    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);   
    exit();
}

Прогноз погоды через 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";
}

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

Благодаря Google Maps API, у разработчиков появилась возможность определять координаты места по адресу нахождения интересующего объекта. Следующая функция принимает адрес и возвращает массив содержащий широту и долготу.

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

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

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

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

Ох уж эти комиссии Paypal. Все, кто когда-либо имел дело с этой системой знает, что это такое. Вашему вниманию представляю код, который вычислит их для вас. Ввести нужно только сумму:

function paypalFees($sub_total, $round_fee) {

    // Начальные параметры
    $fee_percent = '3.4'; // процент за транзакцию (3.4% in UK)
    $fee_cash    = '0.20'; // сумма за транзакцию (£0.20 in UK)

    // Вычисление комиссии
    $paypal_fee = ((($sub_total / 100) * $fee_percent) + $fee_cash);

    if ($round_fee == true) {
        $paypal_fee = ceil($paypal_fee);
    }

    // вычисляем Grand Total
    $grand_total = ($sub_total + $paypal_fee);

    // перевод в цифры
    $sub_total   = number_format($sub_total, 2, '.', ',');
    $paypal_fee  = number_format($paypal_fee, 2, '.', ',');
    $grand_total = number_format($grand_total, 2, '.', ',');

    return array('grand_total'=>$grand_total, 'paypal_fee'=>$paypal_fee, 'sub_total'=>$sub_total);
}

Источник: http://feedproxy.google.com/~r/ruseller/CdHX/~3/a9WZAA-BY2s/lessons.php

Читать комменты и комментировать

Добавить комментарий / отзыв



Защитный код
Обновить

9 супер полезных PHP сниппетов | | 2012-06-19 12:10:11 | | Статьи Web-мастеру | | Самое главное для разработчика не изобретать велосипед и хранить нужный фрагмент кода, чтобы он всегда был под рукой. Сегодня мы покажем вам 9 наиполезнейших PHP техник и методов, которые наверняка | РэдЛайн, создание сайта, заказать сайт, разработка сайтов, реклама в Интернете, продвижение, маркетинговые исследования, дизайн студия, веб дизайн, раскрутка сайта, создать сайт компании, сделать сайт, создание сайтов, изготовление сайта, обслуживание сайтов, изготовление сайтов, заказать интернет сайт, создать сайт, изготовить сайт, разработка сайта, web студия, создание веб сайта, поддержка сайта, сайт на заказ, сопровождение сайта, дизайн сайта, сайт под ключ, заказ сайта, реклама сайта, хостинг, регистрация доменов, хабаровск, краснодар, москва, комсомольск |
 
Поделиться с друзьями: