<?php
 
 
/**
 
 * @package BBCode - Easy BBCode
 
 * @author Robik
 
 * @version 0.3
 
 * @license http://opensource.org/licenses/gpl-3.0.html
 
 */
 
 
/**
 
 * Replaces all the BBCodes to HTML Codes
 
 * @param string $text: the text with BBCodes
 
 * @param array [$usertags] array of tags to replace
 
 */
 
function bb_code($text, $usertags = "")
 
{
 
     $tags = array(
 
        'b','i','u','url','small','big','p','center','color','size','img');
 
    
 
 
        
 
        // If user doesn't specify tags, we'll replace all
 
        if($usertags == "") {
 
            $usertags = $tags;
 
        }
 
        
 
        // Checking that usertags contains unknown for us BBCode 
 
        $diff = array_diff($usertags,$tags);
 
        
 
        // If yes
 
        if(count($diff))
 
            throw new Exception("Unknown tag:".join(' ',$diff));
 
        
 
        // Deleting spaces from begging and end of string
 
        $done = trim($text);
 
        
 
        // Deleting all html code
 
        $done = htmlspecialchars($done);
 
        
 
        if(in_array("url",$usertags)) {
 
            $done = preg_replace("#\[url\](.*?)?(.*?)\[/url\]#si", "<A HREF=\"\\1\\2\" TARGET=\"_blank\">\\1\\2</A>", $done);
 
            $done = preg_replace("#\[url=(.*?)?(.*?)\](.*?)\[/url\]#si", "<A HREF=\"\\2\" TARGET=\"_blank\">\\3</A>", $done);
 
        }
 
        
 
        if(in_array("b",$usertags))
 
            $done = preg_replace("#\[b\](.*?)\[/b\]#si", "<b>\\1</b>", $done);
 
        
 
        if(in_array("i",$usertags))
 
            $done = preg_replace("#\[i\](.*?)\[/i\]#si", "<i>\\1</i>", $done);
 
        
 
        if(in_array("u",$usertags))
 
            $done = preg_replace("#\[u\](.*?)\[/u\]#si", "<u>\\1</u>", $done);
 
        
 
        if(in_array("small",$usertags))    
 
            $done = preg_replace("#\[small\](.*?)\[/small\]#si", "<small>\\1</small>", $done);
 
        
 
        if(in_array("big",$usertags))
 
            $done = preg_replace("#\[big\](.*?)\[/big\]#si", "<big>\\1</big>", $done);
 
        
 
        if(in_array("p",$usertags))
 
            $done = preg_replace("#\[p\](.*?)\[\/p\]#si", "<p>\\1</p>", $done);
 
        
 
        if(in_array("center",$usertags))
 
            $done = preg_replace("#\[center\](.*?)\[\/center\]#si", "<p align=\"center\">\\1</p>", $done);
 
        
 
        if(in_array("color",$usertags))
 
            $done = preg_replace("#\[color=(http://)?(.*?)\](.*?)\[/color\]#si", "<span style=\"color:\\2\">\\3</span>", $done);
 
        
 
        if(in_array("size",$usertags))
 
            $done = preg_replace("#\[size=(http://)?([0-9]{0,2})\](.*?)\[/size\]#si", "<span style=\"font-size:\\2px\">\\3</span>", $done);
 
        
 
        if(in_array("img",$usertags))    
 
            $done = preg_replace("#\[img\](.*?)\[/img\]#si", "<img src=\"\\1\" border=\"0\" alt=\"Image\" />", $done);
 
                
 
        // Changing [enter] to <br />
 
        $done = nl2br($done);
 
        
 
        return $done;
 
    }
 
    
 
 
 
?>
 
 |