code: private function getUnicodeNumber($str)
      {
          $first  = ord($str);
          $length = strlen($str);
          $div    = pow(2, 7 - $length);
          
          // UNICODE の数値
          $bit = $first % $div;
          for ($i = 0; $i < $length - 1; $i ++) {
              $code = ord(substr($str, $i + 1, 1));
              // 2バイト目以降のビットが 10xxxxxx でない場合は不正なパターンとする
              if (intval($code / 64) !== 2) {
                  return null;
              }
              $bit *= 64;
              $bit += $code % 64;
          }
          
          return $bit;
      }
docs: 指定されたバイト列を Unicode 符号点に変換します.
  引数が不正なバイト列だった場合は null を返します.
  
  @param  string $str 次の 1 文字のバイト列
  @return int         次の文字の Unicode 符号点