Да час тоже заметил ,значит наилучший вариант это mb_strlen($str,'utf-8'); ,можете немного расписать как правильно использовать с небольшой частью кода ,она всегда корректно подсчитывает количество символов ?
Нормально будет считать, ещё можно в верху написать mb_internal_encoding('UTF-8'); чтоб не писать каждый рас mb_strlen($str,'utf-8'); а просто mb_strlen($str);