使えそうな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