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