Aiuto e consigli su funzione parsing BBCode

Sevenjeak

Utente Attivo
27 Nov 2012
81
2
8
36
sevenjeak.altervista.org
Salve,

Scusate ma è da molto che non scrivo in questo forum, anche perché ho molto da fare, avrei un problemino su una funzione, da me realizzata, per il parsing del BBCode.

La funzione da me realizzata è questà:

PHP:
function BBCode($text)
{
   $bb = array(
      "/\[b\](.*?)\[\/b\]/is",
      "/\[i\](.*?)\[\/i\]/is",
      "/\[u\](.*?)\[\/u\]/is",
      "/\[left\](.*?)\[\/left\]/is",
      "/\[center\](.*?)\[\/center\]/is",
      "/\[right\](.*?)\[\/right\]/is",
      "/\[code\](.*?)\[\/code\]/is",
      "/\[color='(.*?)'\](.*?)\[\/color\]/is",
      "/\[size='(.*?)'\](.*?)\[\/size\]/is",
      "/\[link='(.*?)'\](.*?)\[\/link]/is",
      "/\[list\]\(.*?)\n\[\/list\]/is"
   );
   
   $html = array(
      "<b>$1</b>",
      "<i>$1</i>",
      "<u>$1</u>",
      "<div align=\"left\">$1</div>",
      "<div align=\"center\">$1</div>",
      "<div align=\"right\">$1</div>",
      "<code>$1</code>",
      "<font color=\"$1\">$2</font>",
      "<font size=\"$1\">$2</font>",
      "<a href=\"$1\" target=\"_Blank\">$2</a>",
      "<ul>$1</ul>"
   );
   
   return preg_replace($bb, $html, $text);
}

La funzione prende come parametro il testo con il BBCode è stampa in output il risultato, l'unico problema, è quando mi interpreta il tag [ list ], ovvero, quando lo interpleta, la funzione non mi da nessun risultato.

In'oltre, vorrei aggiungere il tab [ * ], da convertire in < li >, lo so, basta aggiungerlo è il gioco è fatto, ma se quest'ultimo lo vorrei far interpretare solo se si trova all'interno del tag [ list ]? e possibile farlo solo con un'espressione regolare?

Scusate, ma ho da poco iniziato ad usare le espressioni regolari.
 

Discussioni simili