Обычно я бы просто сделал это.
$str = preg_replace('#(\d+)#', ' $1 ', $str);
Если бы я знал, что это будет utf-8, я добавил бы строчный модификатор "u" в шаблон, и я думаю, что я был бы хорош. Но из-за сообщений о том, что utf-8 занимает в 2 раза больше, а в некоторых случаях в 3 раза больше места, чем было бы, если бы использовался собственный набор символов, я стараюсь не ограничивать приложение utf-8.
Таким образом, я стараюсь держаться подальше от моих любимых функций preg_.
Большинство вещей до сих пор было довольно простым, но я немного застрял на заменах, где я обычно использовал бы классы символов в preg_, такие как "\ d".