replace() avec une variable : et les flags ?

Petit nouveau ! | 2 Messages

02 avr. 2007, 12:48

Bonjour à tous,

Ayant beaucoup d'éléments à remplacer, je souhaite utiliser la fonction replace() avec des variables. J'ai utilisé un tableau, et une boucle pour que celui soit reconnu comme une variable (les tableaux ne fonctionnent pas).

J'ai le code suivant :

Code : Tout sélectionner

function convertTags(myString) { var brut = new Array("[B]", "[/B]", "[I]", "[/I]", "[U]", "[/U]", "[S]", "[/S]", "[b]", "[/b]", "[i]", "[/i]", "[u]", "[/u]", "[s]", "[/s]"); var remplacement = new Array("<b>", "</b>", "<i>", "</i>", "<u>", "</u>", "<s>", "</s>", "<b>", "</b>", "<i>", "</i>", "<u>", "</u>", "<s>", "</s>"); var smileysbrut = new Array(';)',':)',':(',':p',':d',":\'(",':o',':*',':!',':c','8-)','0-)',':x',":\$",':ambivalent:',':angry:',':arg:',':fou:',':grin:',':heart:',':naughty:',':nerd:',':sarcastic:',':sick:',':yuck:',':yum:',':thumbsdown:',':thumbsup:'); var smileysremplacement = new Array('wink.gif','smile.gif','sad.gif','razz.gif','laugh.gif','larmes.gif','shocked.gif','kiss.gif','gaffe.gif','confused.gif','cool.gif','innocent.gif','sealed.gif','moneymouth.gif','2ambivalent.png','2angry.png','2confused.png','2crazy.png','2grin.png','2heart.png','2naughty.png','2nerd.png','2sarcastic.png','2sick.png','2yuck.png','2yum.png','2thumbsdown.png','2thumbsup.png'); t = remplacement.length; u = smileysremplacement.length; j = 0; while(j<t) { var bru = brut[j]; var rep = remplacement[j]; myString = myString.replace(bru, rep); j++; } k = 0; while(k<u) { var sbru = smileysbrut[k]; var srep = smileysremplacement[k]; myString = myString.replace(sbru, "<img src=\"/images/smileys/" + srep + "\">"); k++; }
Le problème, c'est que avec une variable en premier argument, je ne peux pas mettre les flags g et i, pour que la casse ne soit pas prise en compte et que le remplacement s'effectue à chaque occurrence (actuellement, pour plusieurs smileys identiques, seul le premier est remplacé par son image correspondante).
Auriez-vous une idée de comment faire ?

Merci beaucoup :)

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

02 avr. 2007, 14:29

Tu dois pouvoir le faire en plaçant l'expression régulière directement dans ton tableau :

Code : Tout sélectionner

var smileysbrut = new Array(); smileysbrut[0] = /;\)/gi; smileysbrut[1] = /:\)/gi; smileysbrut[2] = /:\(/gi; smileysbrut[3] = /:p/gi; ...
A tester...
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Petit nouveau ! | 2 Messages

02 avr. 2007, 17:43

Je vais regarder ça, merci ;)

Sinon, je vais peut-être générer le code avec php, ça pèsera rien et ça sera plus facile :shock: