Je souhaite effectuer la validation de formulaire côté utilisateur avec JavaScript (jQuery est également utilisé). L'objectif est de supprimer bbCode imbriqués [quote]
balises plus profondes que le niveau 2. Dites, nous avons ce texte:JavaScript: Rechercher imbriqué [citation]
[quote=SoundMAX][quote=Laplundik][quote=SoundMAX]
blahblahblah[/quote]
blahblah
[/quote]
blah[/quote]
Et obtenez ceci:
[quote=SoundMAX][quote=Laplundik]
blahblah
[/quote]
blah[/quote]
Ma seule idée est de .replace [quote]
avec <div>
, puis créez l'objet DOM et supprimez tout ce qui est plus profond que 2 avec jQuery, et analysez tout en arrière sur bbCode. Mais cette solution semble trop compliquée, y en a-t-il de plus élégant?
EDIT:
Merci pour les solutions agréables. Basé sur la réponse de Darioo, j'ai fait ceci:
var text=$('#edit-privatemsgbody').val();
var tmp=[];
var level=0;
for (var i=0,l=text.length;i<l;i++){
if(text[i]=='['&&text[i+1]=='q') level++;
if(text[i-6]=='q'&&text[i-7]=='/'&&text[i-8]=='[') level--;
if(level<3) tmp.push(text[i]);
}
alert(tmp.join(''));
Qui fonctionne très bien.
Mais la solution d'IdealMachine était comme un flash. Je ne savais pas à propos de remplacer les paramètres de fonction de rappel avant, maintenant c'est pratique! Je vais régler avec ça.
* Non * avec regex: http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454 – PleaseStand
@idealmachine: C'est la raison pour laquelle ont demandé une autre solution. –