So che forse in giro forse si trovano delle classe che fanno questo, ma io vorrei personalizzare la cosa nel modo in qui serve a me.
Ho creato, in php, una classe per effettuare il parsing ( analisi ) del BBCode, e ovviamente la disattivazione del codice html, composta da true funzione, il costruttore, una che effettua il parsing e una che restituisce il risultato finale.
Nel costruttore, ecco perché ho creato la classe, passo i tag che mo dovrebbe interpretare ( visto che vorrei, ogni volta che la richiamo, interpretare solo i tag che ho passato come parametro ).
Bhe.. ora non sto a spiegarvi tutto, credo che il funzionamento della classe ve lo potete immaginare voi, questo è il codice ( ora, visto che lo sto provando solo, lo creato solo per alcuni tag ):
Codice PHP:
class BBCode
{
var $output = null;
var $sh = null;
var $rp = null;
function __construct($args)
{
$args = func_get_args();
$this->sh = array();
$this->rp = array();
for ($i = 0; $i < count($args); $i++)
{
$tag = $args[$i];
switch ($tag) {
case "b" || "i" || "u" || "code":
$this->sh[] = "\[$tag\](.*?)\[\/$tag\]\\";
$this->rp[] = "<$tag>\\1</$tag>";
break;
}
}
}
function parsing($text)
{
str_replace("<", "<", $text);
str_replace(">", ">", $text);
preg_replace($this->sh, $this->rp, $text);
$this->output = $text;
}
function out()
{
echo $this->output;
}
}
La richiamo in questo modo:
Codice PHP:
$bb = new BBCode("b", "i", "u");
$bb->parsing(testo_da_interpretare);
$bb->out();
In questo modo, io vorrei che mi interpretasse solamente i tag b, i e u, come ho scritto nei parametri, ma non funziona, ma la funzione out(), che mi dovrebbe restituire il testo con codice interpretato, mi restituisce il testo con il BBCode ( senza interpretarlo ), come posso risolvere?