Возникла такая проблема, что при обрезании строки при помощи substr(), в конце полученной обрезанной строки появляется символ в виде квадратика или знака вопроса, что появляются если браузер не может распознать символ.

Решается проблема, если использовать для обрезания utf-8 строк функцию mb_substr().
Например так:

// указываем кодировку
mb_internal_encoding("UTF-8");
 
$str = 'Строка в кодировке utf-8';
$str = mb_substr($str, 0, 17);

В результате получим красиво обрезанную строку.

Таким же способом можно использовать mb_strlen(), mb_strpos() и другие.