[eluser]überfuzz[/eluser]
Thats about what I can handle myself. I'm running into trouble if I'm trying to extend your regexp:es. First of all I can't extend them to handle upper-roman nestled with lower roman. Furthermore, I can't get the HTML output to validate. Shouldn't the nestled <ol>list items</ol> sit inside the <li>here</li> tags?
Example of how I would like to extend it, not working but still...
Code:
$string = preg_replace('#\[list=a\](.*?)\[/list\]#si', '<ol style="list-style-type:lower-alpha;">\1</ol>', $string);
$string = preg_replace('#\[list=A\](.*?)\[/list\]#si', '<ol style="list-style-type:upper-alpha;">\1</ol>', $string);
$string = preg_replace('#\[list=I\](.*?)\[/list\]#si', '<ol style="list-style-type:upper-roman;">\1</ol>', $string);
$string = preg_replace('#\[list=i\](.*?)\[/list\]#si', '<ol style="list-style-type:lower-roman;">\1</ol>', $string);