Il problema è che questo valore $b lo scrivo su di un file di testo e l'istruzione str_replace sembra non funzionare...

Cioè, se stampo $b con un echo lo scrive su una riga sola [abc] ma se lo metto su un file di testo me lo scrive sempre con i ritorni a capo
[a
b
c]