He intentado haciendo una función prase y str_replace, pero no se, no anda, fijense a ver si saben que puede estar fallando:
Código PHP:
<?php
function parseBBCode ($text) {
$BBCodes = array();
// [email][email protected][/email] codigo..
$BBCodes[] = array("#\[email\]([a-z0-9\-_.]+?@[\w\-]+\.([\w\-\.]+\.)?[\w]+)\[/email\]#si", "<a href=\"\\1\">\\1</a>");
// [url=www.domain.com]domain[/url] codigo.. (xxxx:// sin prefijo).
$BBCodes[] = array("#\[url=(([\w\-]+\.)*?[\w]+(:[0-9]+)?(/[^ \"\n\r\t<]*)?)\](.*?)\[/url\]#si", "<a href=\"http://\\1\">\\5</a>");
// [url=xxxx://www.domain.com]domain[/url] codigo..
$BBCodes[] = array("#\[url=([a-z0-9]+://)([\w\-]+\.([\w\-]+\.)*[\w]+(:[0-9]+)?(/[^ \"\n\r\t<]*?)?)\](.*?)\[/url\]#si", "<a href=\"\\1\\2\">\\6</a>");
// [url]www.domain.com[/url] codigo.. (xxxx:// sin prefijo).
$BBCodes[] = array("#\[url\]((www|ftp)\.([\w\-]+\.)*[\w]+(:[0-9]+)?(/[^ \"\n\r\t<]*?)?)\[/url\]#si", "<a href=\"http://\\1\">\\1</a>");
// [url]xxxx://www.domain.com[/url] codigo..
$BBCodes[] = array("#\[url\]([a-z0-9]+?://){1}([\w\-]+\.([\w\-]+\.)*[\w]+(:[0-9]+)?(/[^ \"\n\r\t<]*)?)\[/url\]#is", "<a href=\"http:\1\2\">\1\2</a>");
foreach ($BBCodes as $BBCode) {
$text = str_replace($BBCode[0],$BBCode[1],$text);
}
return $text;
}
?>