Вроде банальная проблема с substr и mb_substr?
mb_substr надо сказать какую кодировку ему резать.
и еще использовать не strlen, а mb_strlen и тоже с указанием кодировки
Написал хостеру, чего-то сделали и заработало