Цитирую, не мое но нашел и мне тоже интересно.
В PCRE есть специальные последовательности для различных классов Unicode-символов, например, «\p{L}» — это буквы, «\p{N}» — цифры и так далее.
…
Для начала напишите: $text = preg_replace('#\s(\b\pLN)#', ' +$1', $text);
Ну а далее есть еще другие методы:
bolknote.ru/2010/09/08/~2704#29