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