original_string: public static function getPrefix($str, $length)
      {
          $prefixBytes = 0;
          $prefixChars = 0;
          while ($prefixBytes < strlen($str)  &&  $prefixChars < $length) {
              $charBytes = 1;
              if ((ord($str[$prefixBytes]) & 0xC0) == 0xC0) {
                  $charBytes++;
                  if (ord($str[$prefixBytes]) & 0x20 ) {
                      $charBytes++;
                      if (ord($str[$prefixBytes]) & 0x10 ) {
                          $charBytes++;
                      }
                  }
              }
  
              if ($prefixBytes + $charBytes > strlen($str)) {
                  // wrong character
                  break;
              }
  
              $prefixChars++;
              $prefixBytes += $charBytes;
          }
  
          return substr($str, 0, $prefixBytes);
      }
code: public static function getPrefix($str, $length)
      {
          $prefixBytes = 0;
          $prefixChars = 0;
          while ($prefixBytes < strlen($str)  &&  $prefixChars < $length) {
              $charBytes = 1;
              if ((ord($str[$prefixBytes]) & 0xC0) == 0xC0) {
                  $charBytes++;
                  if (ord($str[$prefixBytes]) & 0x20 ) {
                      $charBytes++;
                      if (ord($str[$prefixBytes]) & 0x10 ) {
                          $charBytes++;
                      }
                  }
              }
  
              if ($prefixBytes + $charBytes > strlen($str)) {
                  // wrong character
                  break;
              }
  
              $prefixChars++;
              $prefixBytes += $charBytes;
          }
  
          return substr($str, 0, $prefixBytes);
      }
code_tokens: public static function getPrefix ( $ str , $ length ) { $ prefixBytes = 0 ; $ prefixChars = 0 ; while ( $ prefixBytes < strlen ( $ str ) && $ prefixChars < $ length ) { $ charBytes = 1 ; if ( ( ord ( $ str [ $ prefixBytes ] ) & 0xC0 ) == 0xC0 ) { $ charBytes ++ ; if ( ord ( $ str [ $ prefixBytes ] ) & 0x20 ) { $ charBytes ++ ; if ( ord ( $ str [ $ prefixBytes ] ) & 0x10 ) { $ charBytes ++ ; } } } if ( $ prefixBytes + $ charBytes > strlen ( $ str ) ) { // wrong character break ; } $ prefixChars ++ ; $ prefixBytes += $ charBytes ; } return substr ( $ str , 0 , $ prefixBytes ) ; }
docstring: Get term prefix
  
  @param  string  $str
  @param  integer $length
  @return string
docstring_tokens: Get term prefix