mmm... se me ocurre una forma un poco sucia...
Si la estructura siempre es esa, pues anida unos cuantos explode...
Quiero decir...
1º: haz un explode '-' y obtendras por un lado
<>22:10 y por otro
Madrid<> (las guardas en $parte1 y $parte2)
2º: con la $parte1 haz explode '<' y te quedas con la separacion2
< 22:10 guardandola como $hora.
Haces lo mismo con la $parte2, un explode '>' quedandote en esa ocasion con la separacion1
Madrid > ($ciudad)
¿podria servirte como solución?
PD: En caso de hacerlo asi... optimiza la función al maximo para que no te coma muchos recursos