prima di tutto è meglio se il tuo codice lo racchiudi trai tag code o php , in modo che conservino la indentazione, altrimenti è praticamente illeggibile, infatti mi sono perso subito. Ho però notato la maniera per me alquanto strana con cui acquisisci l'input e fornisci l'output.
Mi sembrerebbe meglio leggere l'input dallo stdin e scrivere l'output sullo stdout, usufruendo così della possibilità di una ridirezzione dello stdin e stdout eventualemente su file o di inseririre con facilità il programma in un pipe.
ciao
sergio