Bonjour! J'hésitais à poser ma question dans jquery ou ici mais bon, voyez vous-même:

Dans mon système de chat, j'ai une fonction js se nommant replaceEmoticons() qui fonctionne bien mais j'ai voulu ajouter aussi une fonction "url_to_link()" afin de rendre les liens cliquables dans la fenetre de chat. Mais j'essaie d'appliquer ces 2 fonctions à ma chaine et il n'y a qu'une sur deux qui marche.

Ce code est bon:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
$("#chatbox_"+chatboxtitle+" .chatboxcontent").append('<div class="chatboxmessage"><span class="chatboxmessagefrom">'+item.f+':&nbsp;&nbsp;</span><span class="chatboxmessagecontent">'+replaceEmoticons(item.m)+'</span></div>');
Et celui-ci aussi:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
$("#chatbox_"+chatboxtitle+" .chatboxcontent").append('<div class="chatboxmessage"><span class="chatboxmessagefrom">'+item.f+':&nbsp;&nbsp;</span><span class="chatboxmessagecontent">'+url_to_link(item.m)+'</span></div>');
mais celui-ci, non:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
$("#chatbox_"+chatboxtitle+" .chatboxcontent").append('<div class="chatboxmessage"><span class="chatboxmessagefrom">'+item.f+':&nbsp;&nbsp;</span><span class="chatboxmessagecontent">'+url_to_link(replaceEmoticons(item.m))+'</span></div>');
J'ai aussi essayé de mettre de cette façon:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
item.m = replaceEmoticons(item.m);
item.m = url_to_link(item.m);
 
$("#chatbox_"+chatboxtitle+" .chatboxcontent").append('<div class="chatboxmessage"><span class="chatboxmessagefrom">'+item.f+':&nbsp;&nbsp;</span><span class="chatboxmessagecontent">'+item.m+'</span></div>');
Mais sans succès... Comment devrais-je procéder? Devrais-je faire une seule fonction qui remplace les smyleys et qui gère les lien en même temps?

Voici mes 2 fonctions:

SMYLEYS:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
function replaceEmoticons(text) {
  var emoticons = {
    ':D' : 'rire.png',
    ':P'  : 'grimace.png',
    ':)'  : 'sourire.png',
    'o0'  : 'perdu.png',
	':-/'  : 'confus.png',
	':S'  : 'merde.png',
	':('  : 'triste.png',
	';)'  : 'clindoeil.png',
	':|'  : 'neutre.png',
	':c'  : 'pleurer.png',
	';P'  : 'grimace.png',
	':vball:'  : 'vball.gif',
  }, url = "../images/smilies/", patterns = [],
     metachars = /[[\]{}()*+?.\\|^$\-,&#\s]/g;
 
  // build a regex pattern for each defined property
  for (var i in emoticons) {
    if (emoticons.hasOwnProperty(i)){ // escape metacharacters
      patterns.push('('+i.replace(metachars, "\\$&")+')');
    }
  }
 
  // build the regular expression and replace
  return text.replace(new RegExp(patterns.join('|'),'g'), function (match) {
    return typeof emoticons[match] != 'undefined' ?
           '<img src="'+url+emoticons[match]+'"/>' :
           match;
  });
}
LIENS:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
function url_to_link(text) {
    var exp = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig;
    return text.replace(exp,"<a href='$1'>$1</a>"); 
}
Merci d'avance pour votre aide!