Как я и предполагал в dcms изобретен велосипед.
function utf8_strlen($str)
{
if (DCMS_USE_MBSTRING)return mb_strlen($str);
elseif (DCMS_USE_ICONV)return iconv_strlen($str);
else
{
// извращенный способ при отсутствии библиотек
static $rus;
if (!isset($rus))$rus=array('й','ц','у','к','е','н','г','ш','щ','з','х','ъ','ф','ы','в','а','п','р','о','л','д','ж','э','я','ч','с','м','и','т','ь','б','ю','Й','Ц','У','К','Е','Н','Г','Ш','Щ','З','Х','Ъ','Ф','Ы','В','А','П','Р','О','Л','Д','Ж','Э','Я','Ч','С','М','И','Т','Ь','Б','Ю');
return strlen(str_replace($rus, '0', $str));
}
}
Файл utf_string.php