Bonjour,
J'ai codé un script permettant de convertir des balises html en bbcode, le code html à convertir a cette forme :
<span style="color: rgb(102, 153, 153);" id="mess1">Je suis gentil</span><br><span style="color: rgb(153, 102, 153);" id="mess2">Non tu es méchant</span>
Il ne m'est pas possible d'intervenir sur le contenu de l'attribut style (de changer le rgb en hexa, car cette couleur est changée par l'utilisateur via une palette de couleur, dans la palette c'est bien en hexadécimal mais dès que l'utilisateur choisi la couleur le script affecte la couleur via document.getElementById(monid).style.color = "#333333' (par exemple) et le navigateur convertit directement cette couleur en rgb dans le code source)
Ce code là est donc traduis en bbcode, lorsque le script voit qu'il y a un style attaché avec une couleur la traduction donne :
1 2 3
|
[color=rgb(102, 153, 153)]Je suis gentil[/color]
[color=rgb(153, 102, 153)]Non tu es méchant[/color] |
La ligne javascript utilisée pour traduire ça est la suivante :
text = text .replace(/<span style="color: ([\s\S]*?);">([\s\S]*?)<\/span>/gi, "[color=$1]$2[/color]");
Mon problème étant que cette conversion (html => bbcode) est faite pour pouvoir affiché le texte html sur un forum utilisant le bbcode, et les couleurs RGB ne sont pas reconnues sur ces forum, il faudrait donc convertir la couleur RGB en hexadécimal, chose que je n'arrive pas à faire, j'ai bien essayé de récupérer les différents nombre de la couleur et de les envoyer dans une fonction convertissant le RGB en hexadécimal, mais ça ne marche pas :
1 2 3 4 5 6 7 8 9 10 11 12 13
| function rgb2hex(r,g,b) {
var hexVal = function(n) {
var data = "0123456789ABCDEF";
if (n==null) return "00";
n=parseInt(n);
if (n==0 || isNaN(n)) return "00";
n=Math.round(Math.min(Math.max(0,n),255));
return data.charAt((n-n%16)/16) + data.charAt(n%16);
}
return hexVal(r)+hexVal(g)+hexVal(b);
}
text = text .replace(/<span style="color: rgb\(([\s\S]*?)\);">([\s\S]*?)<\/span>/gi, "[color=#]" + rgb2hex("$1","$2","$3") + "]$4[/color]"); |
Si quelqu'un a une solution c'est avec plaisir...
Partager