1. Ну и зачем там после всего этого регулярник понадобился?
2. Зачем переменные заключать в кавычки?
3. А компактность - это принципиально? PS: и вообще это всё делается в три действия ([m]list[/m], [m]explode[/m], [m]str_replace[/m]), если не считать конкатенации.