preg_match_all('/[\d.]+|./us', $str, $ar);
[\d.]
matches a digit or decimal point, the +
quantifier after it matches a sequence of them.
Result:
Array
(
[0] => Array
(
[0] => a
[1] => b
[2] =>
[3] => c
[4] => 45
[5] =>
[6] => d
[7] => 123
[8] => e
[9] => f
)
)