echo mb_strlen('ффф'); //6
echo mb_strlen('fff'); //3
Все правильно, русские символы занимают 2 байта, а английские 1.Но нам надо унифицированно проверять длину входящей строки. Ответ прост:
echo mb_strlen('ффф','UTF-8'); //3
echo mb_strlen('fff','UTF-8'); //3
Главное, чтобы входящая строка была действительно в utf-8