про str и substr, эта функция будет работать независимо от кодировки 100%
Вы не правы. Не будет.
Идем сюда: http://www.phpwact.org/php/i18n/utf-8
Находим и читаем:
substr
Official documentation: substr
Risk: medium to high
Impact: accepts arguments in bytes positions not characters — could corrupt a UTF-8 string
ключевые слова: "could corrupt a UTF-8 string"
перевод: "может повредить строки в UTF-8"
аналогично читаем про другие str* функции
надеюсь теперь точно все точки расставлены и спорить больше не о чем