salve.
come tanti ho il problema della gestione del bbcode.
uso queste funzioni per passare da bbcode a html (per l'inserimento nel database) e da html a bbcode (per il reinserimento nei campi textarea per l'edit dei dati del database)
codice:
function format($textarea){
$textarea = trim($textarea);
$textarea = stripslashes($textarea);
$textarea = htmlentities($textarea);
$textarea = nl2br($textarea);
$textarea = ereg_replace("\[B\]","",$textarea);
$textarea = ereg_replace("\[/B\]","",$textarea);
$textarea = ereg_replace("\[I\]","",$textarea);
$textarea = ereg_replace("\[/I\]","",$textarea);
$textarea = ereg_replace("\[U\]","<u>",$textarea);
$textarea = ereg_replace("\[/U\]","</u>",$textarea);
$textarea = preg_replace("#\[ url = ([^\]]+)\]#i", "<a href=\"\\1\" target=\"_blank\">", $textarea);
$textarea = preg_replace("#\[/url\]#i", "</a>", $textarea);
$textarea = preg_replace( "#\[img\](.+?)\[/img\]#si", "<img src=\"\\1\">", $textarea);
return $textarea;
}
function re_format($textarea){
$textarea = ereg_replace("\
","\n",$textarea);
$textarea = ereg_replace("\","[B\]",$textarea);
$textarea = ereg_replace("\","[/B\]",$textarea);
$textarea = ereg_replace("\","[I\]",$textarea);
$textarea = ereg_replace("\","[/I\]",$textarea);
$textarea = ereg_replace("\<u>","[U\]",$textarea);
$textarea = ereg_replace("\</u>","[/U\]",$textarea);
$textarea = preg_replace("#\<a href=\"([^\]]+)\" target=\"_blank\">#i", "[ url= \\1]", $textarea);
$textarea = preg_replace("#\</a>#i", "[/url]", $textarea);
$textarea = preg_replace( "#\<img src=\"(.+?)\">#si", "[img]\\1\[/img]", $textarea);
return $textarea;
}
le due funzioni grossomodo fanno il loro dovere. nn ho fatto tutti i test del caso, ma per i casi generali dovrebbero andare.
il problema rimane sempre lo stesso.
se qualcuno nn chiude un tag ? come posso far in modo che i tag vengano interpretati solo se correttamente chiusi (e magari, se nn chiusi, interpretarli come testo normale... come accade in questo forum )?
ho fatto una ricerca veloce, e ho notato che vi sono tante discussioni a riguardo, ma nessuna (almeno, io non ne ho trovato nessuna) con una risposta
qualcuno che mi possa aiutare ?
thx, kicko