subString() public static méthode

Returns a new string that is a substring of the given string.
See also: mb_substr()
public static subString ( string $str, integer $begin, integer $length ) : string
$str string The input string.
$begin integer The beginning index, inclusive.
$length integer Maximum number of characters to use from str.
Résultat string A substring
Exemple #1
0
 /**
  * Converts a year in Japanese format into Western format.
  *
  * @param $year : kanji or hiragana era name followed by digits, or era name in romaji, space and digit. I.e. : 明治33, めいじ33, Meiji 33
  * @return string|array : The year(s) in Western format.
  * @throws Exception
  */
 public static function toWesternYear($year)
 {
     if (Analyzer::hasKanji($year)) {
         $key = 'kanji';
         $eraName = Helper::extractKanji($year);
         $eraName = $eraName[0];
         $eraValue = (int) Helper::subString($year, Analyzer::length($eraName), Analyzer::length($year));
     } elseif (Analyzer::hasHiragana($year)) {
         $key = 'kana';
         $eraName = Helper::extractHiragana($year);
         $eraName = $eraName[0];
         $eraValue = (int) Helper::subString($year, Analyzer::length($eraName), Analyzer::length($year));
     } else {
         $key = 'romaji';
         $year = strtolower($year);
         $parts = explode(' ', $year);
         $eraName = $parts[0];
         $eraValue = (int) $parts[1];
     }
     if (empty($eraName) || empty($eraValue)) {
         throw new Exception('Invalid year ' . $year);
     }
     $max = count(self::$mapEras);
     $westernYears = array();
     for ($i = 0; $i < $max; $i++) {
         $era = self::$mapEras[$i];
         $overflown = false;
         if (strtolower($era[$key]) == $eraName) {
             $eraStart = $era['year'];
             $westernYear = $eraStart + $eraValue - 1;
             if ($i < $max - 1) {
                 $nextEra = self::$mapEras[$i + 1];
                 $nextEraYear = $nextEra['year'];
                 if ($westernYear > $nextEraYear) {
                     $overflown = true;
                 }
             }
             $westernYears[] = array('value' => $westernYear, 'overflown' => $overflown);
         }
     }
     $results = array();
     foreach ($westernYears as $westernYear) {
         if (!$westernYear['overflown']) {
             $results[] = $westernYear['value'];
         }
     }
     if (empty($results)) {
         throw new Exception('Year ' . $year . ' is invalid');
     } elseif (count($results) == 1) {
         return $results[0];
     } else {
         return $results;
     }
 }
Exemple #2
0
 public function testSubStringFromTheEnd()
 {
     $result = Helper::subString($this->mixCharacters, -3, 3);
     $this->assertEquals('ます。', $result);
 }
Exemple #3
0
 /**
  * Inflects radical for the given verb to the given form
  *
  * @param array $verb
  * @param $form
  * @return array
  */
 public static function getRadicals(array $verb, $form)
 {
     $kanji = $verb['kanji'];
     $kana = $verb['kana'];
     $type = $verb['type'];
     if ($type == 'k') {
         switch ($form) {
             case self::NON_PAST_NEGATIVE:
             case self::PAST_NEGATIVE:
             case self::PASSIVE:
             case self::PASSIVE_SUSPENSIVE:
             case self::IMPERATIVE_POLITE_NEGATIVE:
             case self::IMPERATIVE_HARD:
             case self::FACTITIVE:
             case self::FACTITIVE_SHORTENED:
             case self::POTENTIAL_NEUTRAL:
             case self::POTENTIAL_POLITE:
             case self::VOLITIONAL_FAMILIAR:
             case self::NOT_LOOK_LIKE_POLITE:
             case self::NOT_LOOK_LIKE_NEUTRAL:
                 $kanaRadical = 'こ';
                 break;
             default:
                 $kanaRadical = 'き';
         }
     } elseif ($type == 's-i') {
         $kanaRadical = '';
     } else {
         $kanaRadical = Helper::subString($kana, 0, Analyzer::length($kana) - 1);
     }
     if (!empty($kanji)) {
         $kanjiRadical = Helper::subString($kanji, 0, Analyzer::length($kanji) - 1);
     } else {
         $kanjiRadical = null;
     }
     return array('kanji' => $kanjiRadical, 'kana' => $kanaRadical);
 }