replace() avec une variable : et les flags ?

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : replace() avec une variable : et les flags ?

par totoche » 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:

par Ryle » 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...

replace() avec une variable : et les flags ?

par totoche » 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 :)