勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ。

PHPで土日祝を避ける

   2014/05/17  PHP

広告物を土日祝だけ非表示にしたいと言われ、
できたらPHPで行いたかった。

調べてみるとGoogleカレンダーAPIから取得するか、
配列に祝日を入れるか。

できたら前者でいきたかったけど、指定サーバーの
PHPバージョンが古くjson_decode関数が使えなかった為
後者を用いた。

今後も使いそうなのでメモ。

GoogleカレンダーAPIを用いる方法
<?php
$flg = true;
$today = date('Y-m-d');

if (date("w", strtotime($today)) == 0 || date("w", strtotime($today)) == 6) { //日曜or土曜の場合はフラグをfalse
$flg = false;
} else {
$holidays_url = sprintf(
'http://74.125.235.142/calendar/feeds/%s/public/full-noattendees?start-min=%s&start-max=%s&max-results=%d&alt=json' ,
'outid3el0qkcrsuf89fltf7a4qbacgt9@import.calendar.google.com' ,
date('Y-m-d'),
date('Y-m-t'),
10 // 最大取得数
);
if ($results = file_get_contents($holidays_url)) {
$results = json_decode($results, true);
$holidays = array();
foreach($results['feed']['entry'] as $val) {
if ($val['gd$when'][0]['startTime'] == $today) {
$flg = false;
}
}
}
}
var_dump($flg); //true->土日祝以外 / false->土日祝
?>

■配列に祝日を入れる方法
<?php
$flg = true;
$today = date('Y-m-d');

$holiday = array(
'2014-01-01','2014-01-13','2014-02-11','2014-03-21','2014-04-29','2014-05-03','2014-05-04','2014-05-05','2014-05-06','2014-07-21','2014-09-15','2014-09-23','2014-10-13','2014-11-03','2014-11-23','2014-11-24','2014-12-23',

'2015-01-01','2015-01-12','2015-02-11','2015-03-21','2015-04-29','2015-05-03','2015-05-04','2015-05-05','2015-05-06','2015-07-20','2015-09-21','2015-09-22','2015-09-23','2015-10-12','2015-11-3','2015-11-23','2015-12-23',

'2016-01-01','2016-01-11','2016-02-11','2016-03-20','2016-03-21','2016-04-29','2016-05-03','2016-05-04','2016-05-05','2016-07-18','2016-09-19','2016-09-22','2016-10-10','2016-11-03','2016-11-23','2016-12-23',
);
if (array_search($today, $holiday)) {
$flg = false;
}

var_dump($banner_flg);
?>

 - PHP

  関連記事

ソシャゲのガチャのように当選確率が異なる抽選システムをPHPで作成する方法

ソシャゲのガチャみたいな当選確率が異なる抽選システムをPHPで作成したかった。具 ...

数値を3桁とかでカンマ区切りにする

見たこと無い関数が業務中にあったのでメモ。 number_format ■参考サ ...

PHPのswitch文で比較演算子の使用

switch文は指定の変数が、特定の値もしくは文字列 だった場合のみに使うような ...

PHPでログインフォームにひらがな認証を設置する方法

ログインフォームに平仮名認証を設置したい。英数字認証だとSecurimageとい ...

PHPで簡単にCSVファイルの生成

簡単にデータ並べるだけのCSVファイル生成。 file_put_contensで ...