Проблема: preg_split, при разборе строк в UTF8, возвращает битые символы, т.к. не понимает что строка мультибайт.
Решение: добавить ключ "u":
$sTMP = 'Добрый день!'; echo '<pre>'; print_r(preg_split('//u', $sTMP, -1, PREG_SPLIT_NO_EMPTY)); echo '</pre>';