ciauz...ti metto qui sotto una prova che avevo fatto un po' di tempo fa...
nn mi ricordo se funzionava con tutti i tag...può essere ottimizzata...e sistemata...
Codice PHP:
function convert_bb_html($text) {
$bb_code[0] = '/(\[b\])(.*)(\[\/b\])/i';
$bb_replace[0] = '[b]${2}[/b]';
$bb_code[1] = '/(\[code\])(.*)(\[\/code\])/i';
$bb_replace[1] = '<pre>${2}</pre>';
$bb_code[2] = '/(\[img\=(.+?)\])(.*)(\[\/img\])/i';
$bb_replace[2] = '[img]${2}[/img]';
//$bb_code[3] = '/(\[size\)(.*)(\[\/size\])/i';
$bb_code[3] = '/(\[size\=([1-9])\])([^\a]+?)(\[\/size\])/i';
$bb_replace[3] = '<span style="font-size: ${2}pt;">${3}</span>';
$bb_code[4] = '/(\[color\=([\#]?[0-9a-f]{3}|[\#]?[0-9a-f]{6}|[a-z]{3,})\]([^\a]+?)\[\/color\])/i';
$bb_replace[4] = '<span style="color: ${2};">${3}</span>';
$bb_code[5] = '/(\[quote\])(.*)(\[\/quote\])/i';
$bb_replace[5] = '<pre>${2}</pre>';
$bb_code[5] = '/(\[i\])(.*)(\[\/i\])/i';
$bb_replace[5] = '[i]${2}[/i]';
$bb_code[6] = '/(\[u\])(.*)(\[\/u\])/i';
$bb_replace[6] = '<u>${2}</u>';
$bb_code[7] = '/(\[align\=(left|right|center)\]([^\a]+?)\[\/align\])/i';
$bb_replace[7] = '<div align="${2}">${3}</div>';
$bb_code[8] = '/(\[url\=(.+?)\](.+?)\[\/url\])/i';
$bb_replace[8] = '[url="${2}"]${3}[/url]';
$bb_code[9] = '/(\[hr])/i';
$bb_replace[9] = '<hr>';
$bb_code[10] = '/(\[list\])(.*)(\[\/list\])/i';//lista non ordinata
$bb_replace[10] = '<ul>${2}[/list]';
$bb_code[11] = '/(\[list\=1\]([^\a]+?)\[\/list\])/i'; //lista numerata
$bb_replace[11] = '[list=1]${2}[/list]';
$bb_code[12] = '/(\[list\=(a|A|i|I)\]([^\a]+?)\[\/list\])/i'; //lista ordinata con lettere o numeri romani
$bb_replace[12] = '[list=1]${3}[/list]';
$bb_code[13] = '/(\[\*\](.+?)\[\/\*\])/i'; //elemento della lista
$bb_replace[13] = '[*]${2}';
$return = preg_replace($bb_code, $bb_replace, $text);
return $return;
}
una nota: alcuni tag sono diversi dalla sintassi standard...io l'avevo fatto così perchè era il modo in cui mi serviva...quindi ti conviene controllare...
altra cosa: questa funzione funge solo se il testo è tutto su una linea... cioè se nn hai degli \n
per farlo funzionare su un testo multi-linea se nn sbaglio devi modificare alla fine di ogni espressione regolare /i e sostituirlo con /ims
edit: attenzione...il forum mi interpreta alcuni tag, per vederlo corretto devi quotare il mio messaggio
ciauz