public static function split($str, $length = 1, $yoon = false)
    {
        // First split the given string into single characters ; default and
        // most common case.
        $chrs = preg_split("//u", $str, 0, PREG_SPLIT_NO_EMPTY);
        if($length === 1 && !$yoon) {
            return $chrs;
        }

        // ... handle cases where length != 1
        $str_length = count($chrs);
        $concatChrs = array();
        for ($i = 0, $j = -1, $k = -1; $i < $str_length; $i++) {

            // With yoon set to TRUE, consider the base syllable and the yoon
            // character as a single character.
            $skip = false;
            $k++;
            if($yoon && preg_match(self::PREG_PATTERN_KANA_YOON, $chrs[$i])) {
               $skip = true;
               $k--;
            }

            if(!$skip && $k % $length === 0) {
                $j++;
                $concatChrs[$j] = $chrs[$i];
            }
            else {
                 $concatChrs[$j] .= $chrs[$i];
            }
        }

        return $concatChrs;
    }