se a qualcuno potesse servire questa funzione, funziona! ed è anche un pò più pulita
l'importante è che i tag non contengano "\"
codice:function replaceByModel(txt,model,tag){ function replace_by(txt,pattern,new_txt,start){ pt1=txt.substr(0,start); pt2=txt.substr(start,txt.length-start); return pt1+pt2.replace(eval(pattern),new_txt); } function escapeRegex(s){ return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&') } //scorro tutti i tag for(i=0;i<tag.length;i++){ pattern="/"+escapeRegex(tag[i].inizio)+"(.*?)"+escapeRegex(tag[i].fine)+"/"; //in matches metto tutti i tag+contenuti in un array matches = txt.match(eval(pattern+"g")); //prendo model e sostituisco i tag con quelli di txt ind=-1; fin=0; i_match=0; while(model.indexOf(tag[i].inizio,ind+1)!=-1){ model=replace_by(model,pattern,matches[i_match],fin); ind=model.indexOf(tag[i].inizio,ind+1); fin=model.indexOf(tag[i].fine,ind)+tag[i].fine.length; i_match++; } } return model; }


Rispondi quotando