Si quieres convencerte de que el bucle funciona bien, te basta con poner un print "[$palabra]\n" dentro de él
Te falla en la última palabra porque no le has quitado el carácter de fin de línea a la frase que te ha pasado el usuario.
Inserta la siguiente línea, después de hacer la lectura: