Статьи

10 супер полезных фрагментов PHP

Наличие правильного фрагмента кода в нужное время, безусловно, может быть спасением для веб-разработчиков. Сегодня я собрал 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";

» Кредиты: PHP Snippets.info

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

Эта полезная функция преобразует время в секундах во время в годах, месяцах, неделях, днях и т. Д.

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";
}

» Кредиты: Snipplr

Получить широту и долготу от адреса

В связи с популярностью 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;
}

» Кредиты: Snipplr

Получить favicon домена с помощью PHP и Google

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

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

» Кредиты: Snipplr

Рассчитать сборы 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);
}

» Кредиты: Snipplr

(Последний фрагмент был удален из-за ошибки, извините)