PHP 日時のデータから時分のみ取り出して整形するサンプルコード

PHP

PHP 日時のデータから時分のみ取り出して整形するサンプルコード

よくやる処理の割に、いつも都度考えているので、書いておきます。

2014-06-17 12:10:50
というデータを
12:10
だけにする、というようなコードです。

 $date_time = "2014-06-17 12:10:50";
 $time = date("H:i", strtotime($date_time));
 echo $time;

ちなみに、$date_timeが空の場合、09:00になってしまいます。
なぜ9時なのか?

それは、UNIXタイムスタンプが0の場合は、1970年1月1日0時0分だから、00:00が正しいだろう!と思われるかもしれません。

し・か・し、ここは日本です。
1970年1月1日0時0分はグリニッジ標準時での話なので、その時日本は何時だったかというと、9時だったわけですね。

なので

 $time = date("H:i", 0);

は09:00で正しいのです。

PHP 小数か整数かの正規表現

PHP

PHP 小数か整数かの正規表現

小数(0.5とか1.22とか)、あるいは整数(1とか10とか)で許可する場合です。

 if(! preg_match('/^[0-9]+(\.[0-9]*)?$/', $int_or_float)){
     echo "小数か整数を入力してください";		
 }

PHP 2点間の直線距離を求める式

PHP

PHP 2点間の直線距離を求める式

以下の住所、2点間の直線距離を求めます。
出発地:神奈川県横浜市神奈川区鶴屋町2-21
目的地:東京都港区芝公園4-2

主なやりかたは、geocording化して、地球の半径やら緯度経度をラジアンにするなどを行って計測させます。

*geocordingはされているものとして考えます…。

出発地の緯度経度

 $start_latutude = 35.46943;
 $start_longitude = 139.621018;

目的地の緯度経度↓

 $end_latitude = 35.658604;
 $end_longitude = 139.745133;

地球の半径

 $earth_r = 6378.137;

緯度差・経度差をラジアンに

 $latitude_margin = deg2rad($end_latitude - $start_latutude);     
 $longitide_margin = deg2rad($end_longitude - $longitude );

南北の距離

 $south_north = $earth_r * $latitude_margin;

東西の距離

 $west_east = cos(deg2rad($start_latutude)) * $earth_r * $longitide_margin;

三平方の定理

 $distance = sqrt(pow($west_east,2) + pow($south_north,2));

ちなみに計算を行うと、23.808kmになりました!!

PHPUnit 超ことはじめ

PHP

私はAndroidアプリではJUnitを使って開発をしたことがありますが、PHPのユニットテストは初めてです。
PHPUnitをこれから勉強していきます。という超最初の一歩です。

PHPUnitの大変よい点は、日本語のマニュアルがしっかりしてる!ちゃんとある!ってことですね[smile]
https://phpunit.de/manual/current/ja/installation.html

ありがたやー ありがたやー

まずは、自分の開発用のWindowsPCに、上記のURLの記述に沿って、PHPUnitをインストールしてみます。

 phpunit --version

とかやってみて、バージョンが表示されるのを見て喜んでみます⊂(^-^)⊃

まず、簡単!なテストを作って、テストを走らせてみます。

 //テストする元のクラス
 //Calculator.php
 <?php
 class Calculator
 {
 
    public function add($a, $b)
    {
        return $a + $b;
    }
 
 }
 //テスト
 <?php
 require 'Calculator.php';
 
 class CalculatorTests extends PHPUnit_Framework_TestCase
 {
    private $calculator;
 
    protected function setUp()
    {
        $this->calculator = new Calculator();
    }
 
    protected function tearDown()
    {
        $this->calculator = NULL;
    }
 
    public function testAdd()
    {
        $result = $this->calculator->add(1, 2);
        $this->assertEquals(3, $result);
    }
 
 }

上記2つのファイルを下記のフォルダに入れます。
C:\xampp2\htdocs\test\php_unit

コマンドプロンプトで

 phpunit CalculatorTest.php

とやります。

 OK

と表示されましたね[smile]

PHPMailerでCCやBCCのメールが届かない

PHP

PHPMailerでCCやBCCのメールが届かない

PHPでHTMLメールを送信する サンプルコードあり
でご紹介しました、PHPでメールを送信する便利なライブラリPHPMailer。

CC、BCCを送信する機能もあるのですが、ある落とし穴があってはまってしまったので、書いておきます!
BCCは次のように送信できますが、

 $mail = new PHPMailer();
 $mail->AddAddress('hoge@hogehoge.net');
 $mail->AddCC('admin@hogehoge.net', 'Admin');
 $mail->AddBCC('admin@hogehoge.net', 'Admin');

送信先とCCが同じアドレス、送信先とBCCが同じアドレスだと、TOにしか送信してくれません!
開発中は、同じアドレスで済ませちゃったりしがちなので、ハマることがまたありそうです(^_^;