Soucis de balises bbcode !! [Résolu]

Signaler
Messages postés
16
Date d'inscription
vendredi 3 décembre 2004
Statut
Membre
Dernière intervention
24 février 2006
-
Messages postés
16
Date d'inscription
vendredi 3 décembre 2004
Statut
Membre
Dernière intervention
24 février 2006
-
Kida

Salut les codeurs!

Je cherche partout sur le web une personne ayant eu mon prob, mais non !

J'utilise une function storeCaret(selec) ... pour ajouter des balises bbcode dans mon formulaire. Ca marche nickel avec les smiley, le gras, souligné et alignements, mais avec color, quand je met :

--> storeCaret('color=#FF000000'), il m'écrire dans le form ceci:

--> [color='#FF0000']test/color='#FF0000'

et donc ne me traduit pas le seconde balise, et sur Preview ca donne:

--> test/color=#FF0000

j'ai essayer de bidouiller ma function bbcode($t) mais rien à faire.

Si quelqu'un avait une idée ca serait chouette, car je suis déjà à la bourre dans le timing du site.

Merci d'avance pour vos réponses.

Kida

6 réponses

Messages postés
282
Date d'inscription
vendredi 16 mai 2003
Statut
Membre
Dernière intervention
19 juillet 2006

anthomicro-> kan je marke explode("=",'color=#FF000000'),
il es bien évident qu'il faut remplacer color=#xxxxxx par une
variable par ex. qui contiendrait la chaine de caractère color=#xxxxxx!

ainsi quelque soit la couleur cela mrhcera: il suffit de rmplir la variable ar le code couleur désiré




Que la Force soit avec toi, Jeune Padawan!!!
Messages postés
282
Date d'inscription
vendredi 16 mai 2003
Statut
Membre
Dernière intervention
19 juillet 2006

pour ta fermeure de balise, tente un explode:


$color=explode("=",'color=#FF000000')."\'";



ainsi $color contiendra juste 'color'... a toi d'afficher le /




Que la Force soit avec toi, Jeune Padawan!!!
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
Salut ;-)



Windu > la couleur étant variable je doute que ce soit une bonne méthode



kida > dis nous ce que tu souhaites faire précisément stp et le code actuel que tu utilises pour réaaliser cette fonction.



a ++

Vulgarisation informatique : Entraide, dépannage et vulgarisation informatique

Forum d'entraide informatique (14 catégories)
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
Ok ;-)

Vulgarisation informatique : Entraide, dépannage et vulgarisation informatique

Forum d'entraide informatique (14 catégories)
Messages postés
16
Date d'inscription
vendredi 3 décembre 2004
Statut
Membre
Dernière intervention
24 février 2006

Kida

Hello !

Merci pour vos réponses !!

Je viens d'arriver devant le pc, j'essaie vos solutions et vous tiens au courant de la suite des évènements .

Schuss !
Messages postés
16
Date d'inscription
vendredi 3 décembre 2004
Statut
Membre
Dernière intervention
24 février 2006

Kida

Bon j'y arrive pas !

Je vais essaier de vous expliquer plus précisement.

En fait j'ai un un formulaire en Back Office qui permettra aux admin du site de saisir des textes long et je fais donc en sorte qu'ils puissent mettre en forme leurs textes avec du bbcode.

Ensuite en bas du form il y a un bouton "Preview" pour prévisualiser la page avant l'ajout dans la base.

Codes:

Page du form:

Bouton et fonction storeCaret();

(c'est pas moi qui l'ai faite)
-------------------------------------------
<script language= "Javascript">


var isMozilla = (navigator.userAgent.toLowerCase().indexOf('gecko')!=-1) ? true : false;


function storeCaret(selec)


{


if (isMozilla)


{


// Si on est sur Mozilla


oField = document.forms['ajoutMethode'].elements['par1'];


objectValue = oField.value;


deb = oField.selectionStart;


fin = oField.selectionEnd;


objectValueDeb = objectValue.substring( 0 , oField.selectionStart );


objectValueFin = objectValue.substring( oField.selectionEnd , oField.textLength );


objectSelected = objectValue.substring( oField.selectionStart ,oField.selectionEnd );


// alert("Debut:'"+objectValueDeb+"' ("+deb+")\nFin:'"+objectValueFin+"' ("+fin+")\n\nSelectionné:'"+objectSelected+"'("+(fin-deb)+")");


oField.value = objectValueDeb + "[" + selec + "]" + objectSelected + "+ selec + "" + objectValueFin;


oField.selectionStart = strlen(objectValueDeb);


oField.selectionEnd = strlen(objectValueDeb + "[" + selec + "]" + objectSelected + "+ selec + "");


oField.focus();


oField.setSelectionRange(


objectValueDeb.length + selec.length + 2,


objectValueDeb.length + selec.length + 2);


}


else


{


// Si on est sur IE


oField = document.forms['ajoutMethode'].elements['par1'];


var str = document.selection.createRange().text;


if (str.length>0)


{


// Si on a selectionné du texte


var sel = document.selection.createRange();


sel.text = "[" + selec + "]" + str + "+ selec + "";


sel.collapse();


sel.select();


}


else


{


oField.focus(oField.caretPos);


// alert(oField.caretPos+"\n"+oField.value.length+"\n")


oField.focus(oField.value.length);


oField.caretPos = document.selection.createRange().duplicate();


var bidon = "%~%";


var orig = oField.value;


oField.caretPos.text = bidon;


var i = oField.value.search(bidon);


oField.value = orig.substr(0,i) + "[" + selec + "]+ selec + "" + orig.substr(i, oField.value.length);


pos = i + 2 + selec.length;


//placer(document.forms['news'].elements['newst'], pos);


var r = oField.createTextRange();


r.moveStart('character', pos);


r.collapse();


r.select();
}
}
}
</script>

Ici il m'affiche: --> test='#FF0000'

Page "Preview":

<? include('../BBCode.php'); ?>

BBCode.php:

// couleur
$t= str_replace(" ", "", $t);
$regCouleur="\[color= ?(([[:alpha:]]+)|(#[[:digit:][:alpha:]]{6})) ?\]";
$t=ereg_replace($regCouleur, "[file://\\1\ \\1\ ]">", $t);

Affichage du paragraphe:

<? echo bbCode(html_entity_decode(stripslashes(affich($par1)))) ?>

Ici il m'affiche: --> test=#FF0000

Je connaît pas mal le language mais suis pas non plus hypra forte.

Merci pour votre aide! Je continue mes recherches !!