Javascript, php et textarea...

Fermé
jeune prog Messages postés 55 Date d'inscription samedi 6 mars 2004 Statut Membre Dernière intervention 18 juillet 2008 - 19 juin 2004 à 18:39
 frodon - 20 août 2008 à 20:04
Bonjour à tous,

J'ai un problème avec se code:

<html>
<head>
<title>Ajouter du texte au milieu d'un textarea</title>
</head>
<body>
<form name="poster" method="POST" action="ee.php" onSubmit="">
<p>Mise en forme du texte :
   <a href="javascript:AddText('[url]','URL','[/url]');">URL</a>
   | <a href="javascript:AddText('[email]','email@email.fr','[/email]');">Email</a>
   | <a href="javascript:AddText('[b]','Texte en gras','[/b]');">Gras</a>
   | <a href="javascript:AddText('[i]','Texte en italique','[/i]');">Italique</a>
   | <a href="javascript:AddText('[u]','Texte souligné','[/u]');">Souligné</a>...
<br>
Smileys :
   <a href="javascript:AddText('',':)','');">Content</a>
   | <a href="javascript:AddText('',':(','');">Pas content</a>
   | <a href="javascript:AddText('','8o)','');">Faire le clown</a>
   | <a href="javascript:AddText('',';-D','');">LOL</a>...
</p>
<script language="JavaScript" type="text/javascript">
function storeCaret(text)
{ // voided
}

function AddText(startTag,defaultText,endTag) 
{
 if (document.poster.message.createTextRange) 
 {
  var text;
  document.poster.message.focus(document.poster.message.caretPos);
  document.poster.message.caretPos = document.selection.createRange().duplicate();
  if(document.poster.message.caretPos.text.length>0)
  {
   document.poster.message.caretPos.text = startTag + document.poster.message.caretPos.text + endTag;
  }
  else
  {
   document.poster.message.caretPos.text = startTag+defaultText+endTag;
  }
 }
 else document.poster.message.value += startTag+defaultText+endTag;
}
</script>

<textarea
   rows='8'
   cols='30'
   name=message
   wrap=virtual
   onmouseover="this.focus();"
   onkeyup="javascript:storeCaret(this);"
   onclick="javascript:storeCaret(this);"
   onchange="javascript:storeCaret(this);">
</textarea><br>
<input type="submit" name="soumettre" value="envoyer">
</form>
</body>
</html>

<?

$test=$_POST['message'];

print("$test"); 

?>


Il marche super bien,

Seulement comment puis-je faire pour que le naviguateur interprete les balises quand je clique mettons sur gras:

il m'ecrit sa:

[b]gras[/b]

Se qui est logique car c'est se qui est entrer dans le textarea mais comment puis-je le faire interpreter svp?

Merci à tous...
A voir également:

5 réponses

La solution d'esox_ch fonctionne, mais est selon moi un peu dangereuse dans la mesure ou tu vas remplacer tous les crochets... je te sugère plutôt la fonction php preg_replace() qui fait ça très bien. Voilà la fonction que j'utilise, elle prend ton message initial ($test) en argument et renvoi le texte transformé, il ne reste plus qu'à l'afficher :)

function parseTexte($text) {

	$bbcode= array (
		"/\[b\](.+?)\[\/b\]/si",
		"/\[i\](.+?)\[\/i\]/si",
		"/\[u\](.+?)\[\/u\]/si",
		"/\[img\](.+?)\[\/img\]/si",
		"/\[url=(.+?)\](.+?)\[\/url\]/si"
	);

	$htmlcode= array (
		"<b>$1</b>",
		"<i>$1</i>",
		"<u>$1</u>",
		"<img src=\"$1\" border=\"0\">",
		"<a href=\"$1\" target=\"_blank\">$2</a>"
	);

	$text = preg_replace($bbcode,$htmlcode,$text);
	return $text;
}
1
super!
Une question encore : sur les interface d'édition comme celles de phpBB on peut sélectionner le texte, cliquer sur un bouton, et les balises bb s'affichent toutes seules.
Il y a moyen de faire ça sans javascript?
0
oui sa peux mais comme toi je cherche
0
pour imiter phpBB et mettre en gras la selection, on peut le faire peut-etre avec quelque chose comme ca:

javascript:AddText('[b]',(txtarea.value).substring(txtarea.selectionStart,
txtarea.selectionEnd),'[/b]');
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
esox_ch Messages postés 770 Date d'inscription mardi 28 janvier 2003 Statut Membre Dernière intervention 14 mars 2007 49
19 juin 2004 à 19:09
Je suis pas sur d'avoir capter. Mais si c ce que je pensse, il te suffit pas de faire un
str_replace("[","<",$test);
str_replace("]",">",$test);
?

Esox
Eternel Questionneur. Seul et Unique membre de la : SPdLM
=> Société Protectrice des Langages Maltraités
-1