Maybe I missed the boat, but is there a reason you aren't using a simple charindex?
select charindex(' ', field) returns where the first space is located, you can use that to start the next search through the string
select charindex(' ', field) -- FirstSpace and number of chars.
, charindex(' ', field, charindex(' ', field)+1) -- SecondSpace
, charindex(' ', field, charindex(' ', field)+1) - charindex(' ', field) -- Nbr of chars between first and second space
and so on... It can get pretty ugly, but if it is just ext + phone + ext then you should only have 3 spaces in your input.