Часто встречается проблема при которой на сайте выводятся знаки вопроса или разные символы кракозяб при обрезании текста.

Это происходит при использовании функции substr.

Причина в том что эта функция нормально работает только с латиницей на англоязычных сайтах.

Русский язык более требовательный и работает как правило в кодировке UTF-8.

Для того чтобы решить эту проблему, нужно заменить функцию обрезки на что то типа

mb_substr($str, 0, 3, 'UTF-8');