とっても使えるPHPスニペットいろいろ

SPONSORED LINK

Pocket

こういうまとめはよくあるし、安直に紹介するとフルボッコになったりするのですが(汗)、個人的に「お、便利かも!」と思えるスニペットばかりだったのでご紹介。

全部で10個紹介されていますが、個人的にぐっときたものをばざざっと・・・。

■ PHPで距離計算

視点と終点の距離計算をしてくれるコードですね。緯度経度で指定します。また単位(KMとか)も指定できますよ。

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

■ 秒数をいろんな単位に変換

こちらもよく使いそう。結果は配列で帰ってきますね。

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

■ ファイルを強制的にダウンロードさせる

ただのリンクじゃなくて、強制的にダウンロードさせたい場合ありますよね。そういうときに使えます。

ちなみに認証後のファイルダウンロードならmod_xsendfileがおすすめです。

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();
}

■ 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をゲットしたり、住所から緯度経度を取得したり、といったコードがありますよ。一度覗いておくといいかもですね。

» 10 super useful PHP snippets – CatsWhoCode.com

ツイッターもやっています!

SPONSORED LINK

  1. No comments yet.

  1. No trackbacks yet.