使えそうなPHPのユーザー定義関数いろいろ(2)
- May 2nd, 2014
今後使いそうな、PHPのユーザー定義関数をメモ。第二弾。
前回の記事はこちら→使えそうなPHPのユーザー定義関数いろいろ
文字列を検索ワード用に変換
指定の文字列をSQLの検索文字用に変換する関数。
// 1:文字列
function strConvertSearch($str) {
if (!$str) return $str;
$str = urldecode($str);
$str = trim($str);
$str = stripslashes($str);
$str = mb_convert_kana($str, "aKs");
$str = preg_replace('/\s+/', ' ', $str);
return $str;
}
文字列を指定数ごとに折り返す
指定の文字列をn文字数間隔で折り返す、または文字列を挿入する関数。
// 1:文字列, 2:間隔数, 3:挿入文字(配列指定)
function strSplitByWidth($str = '', $width = 30, $deco = array()) {
if (!$str) return '';
$strs = explode("\n", $str);
$deco[0] = !empty($deco[0]) ? (!$this->isNullEmpty($deco[0]) ? $deco[0] : '') : '';
$deco[1] = !empty($deco[1]) ? (!$this->isNullEmpty($deco[1]) ? $deco[1] : "\n") : "\n";
$result = '';
$i = 0;
foreach ($strs as $str) {
$str = trim($str);
if ($str) {
$position = 0;
while ($part = mb_strimwidth($str, $position, $width)) {
$position += mb_strlen($part);
$result .= ($i ? $deco[0] : ''). $part. $deco[1];
$i ++;
}
} else {
$result .= $deco[1];
}
}
return $result;
}
配列を指定文字区切りの文字列にして空の場合はNULLを返す
implode関数と同じ処理。配列の中身が空の場合はnullを返す。
※isNullEmpty関数は「使えそうなPHPのユーザー定義関数いろいろ」に記載しています。
// 1:文字列, 2:配列
function implode_null($str = '', $arr = array()) {
if (!$arr) return null;
$arr = is_array($arr) ? $arr : array($arr);
$result = '';
foreach ($arr as $value) {
if (isNullEmpty($value)) continue;
$result .= ($result ? $str : ''). $value;
}
return $result ? $result : null;
}
共通の値を配列から除外する
配列の値を比較して、同じ値があれば削除する関数。
// 1:基準配列, 2:削除配列
function array_exclusion($arr = array(), $ex_arr = array()) {
if (!$arr || !$ex_arr) return $arr;
$result = array();
foreach ($arr as $key => $name) {
if (!in_array($name, $ex_arr)) $result[$key] = $name;
}
return $result;
}
Google Calendar API v3の日付を取得
Google Calendar API v3を利用する時に使用する日付を取得する。
Google Calendar API v3に関しては「Google Calendar API v3を利用して祝日を取得してみた」を参照してください。
// 1:日付(配列での複数指定可)
function getGoogleHolidayDate($date = null) {
$date = $date ? $date : date('Y-m-01');
$dates = is_array($date) ? $date : array($date);
asort($dates);
$i = 0;
$result = array('start'=>'', 'end'=>'');
foreach ($dates as $date) {
$datetime = strtotime($date);
if (!$i) $result['start'] = date('Y-m-d', $datetime). 'T00:00:00Z';
if ($i == count($dates)-1) $result['end'] = date('Y-m-01', strtotime('1month', $datetime)). 'T00:00:00Z';
$i ++;
}
return $result;
}- May 2nd, 2014
