nella pagina del form
Codice PHP:
<script language="Javascript">// inserisco codice per bbcode, es: [url]http://javascript.html.it/demo/javascript/552/esempio.htm[/url]
var isMozilla = (navigator.userAgent.toLowerCase().indexOf('gecko')!=-1) ? true : false;
var regexp = new RegExp("[\r]","gi");
function storeCaret(selec, idForm, idElem)
{
if (isMozilla)
{
// Si on est sur Mozilla
oField = document.forms[idForm].elements[idElem];
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[idForm].elements[idElem];
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);
var r = 0;
for(n = 0; n < i; n++)
{if(regexp.test(oField.value.substr(n,2)) == true){r++;}};
pos = i + 2 + selec.length - r;
//placer(document.forms['news'].elements['newst'], pos);
var r = oField.createTextRange();
r.moveStart('character', pos);
r.collapse();
r.select();
}
}
}
</script>
<form name="news">
...
...
<input value="url" style="width: 50px; border:1px solid red;" onclick="storeCaret('url', 'news', 'descr')" type="button" />
<textarea name="descr" cols="100" rows="10"></textarea>
</form>
quando estrai
Codice PHP:
$search = array(
'/\-b\-(.*?)\-\/b\-/is',
'/\-i\-(.*?)\-\/i\-/is',
'/\-u\-(.*?)\-\/u\-/is',
'/\-img\-(.*?)\-\/img\-/is',
'/\-url\-(.*?)\-\/url\-/is',
'/\-url\=(.*?)\-(.*?)\-\/url\-/is',
'/\\n/is'
);
$replace = array(
'[b]$1[/b]',
'[i]$1[/i]',
'<u>$1</u>',
'[img]$1[/img]',
'[url="http://$1"]$1[/url]',
'[url="http://$1"]$2[/url]',
'
'
);
$descr = preg_replace($search, $replace, $row['descr']);
probabilmente ci sono altre soluzioni per il bbcode

PS: il forum mi ha eseguito tutti i tag... ti ho editato il post. sostituisci tutti gli - con le parentei quadre aperte e chiuse.