Bueno para el indentado el problema no creo que es el implode sino que tienes declarado un trim en la linea
Eso te esta borrando los espacios anteriores. Claro esta, lo estas haciendo porque quieres verificar la linea sino no hace el siguiente if o mejor dicho nunca va a encontrar la linea si esta indentada. Vas a tener que usar Expresiones regulares para verificar cuantos indentados tienes y guardarlos en una variable y despues que hagas el if vuelves a colocarle los indentados