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);
    }
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);
    }
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 ) ; }
Get term prefix

@param  string  $str
@param  integer $length
@return string
Get term prefix