Ещё на шаг ближе.
С переносом получилось. Но работает только с php и css кодом, c html не хочет.Потому, как в этой части кода
var stack = [], j=-1, bound = '==bound==';
str = str.replace(/(\[code(:?=[^\]]+)?\])(.*?)(\[\/code\])/gi, function (s,p1,p2,p3){
stack[++j]=[p1,p2,p3]; return bound+j+bound;
});
мне не понятно,что такое s,p1,p2,p3?
И не понятен '==bound=='.Что это что с ним делать.