o si quieres con expresiones regulares :
Código PHP:
Ver original$cadena = "niño-pepe-lucho - DIOS - TESALVE - MARIA";
$cadena = preg_replace('/-/', ' ', $cadena); //reemplaza los guiones con un espacio $cadena = preg_replace('/\s\s+/', ' ', $cadena);//deja solo un espacio entre las palabras preg_match('/(([^ ]*)\s+([^ ]*)\s+([^ ]*))$/', $cadena,$resultado );//busca las ultimas tres palabras echo $resultado[0]; //el resultado seria : DIOS TESALVE MARIA
Esto funciona incluso si no todas las palabras tienen guiones entre si, como pusiste al principio (por error creo)
Cita: Tengo una cadena con 5 guiones dentro.
$cadena = "niño-pepe-lucho DIOS - TESALVE - MARIA";
pero solo hay cuatro guiones.
Como dije funciona con cualquier combinacion de guiones (1,2,3... etc )