Je vais expliquer :
Il faut premièrement qu'il y ait au moins 2 espaces pour que la chaine soit parsé par ce passage.
Avec le premier str_replace(), ça donnerais :
=> " TOTO TATA "
et le second serait, dans ce cas, inutile.
Mais maintenant regardons s'il y a 3 espaces
Le premier str_replace() va faire
" TOTO TATA "
Mais il reste encore des doubles espaces, puisque c'est un nombre impair d'espaces
donc avec le second str_replace() on va arriver à
" TOTO TATA "
Et voila pourquoi il y en a 2, et pas un seul, puisque sinon ça ne marcherais pas comme voulu.