PHP Classes

File: LightBB.php

Recommend this page to a friend!
  Classes of Robert P   Light BBCode   LightBB.php   Download  
File: LightBB.php
Role: Auxiliary script
Content type: text/plain
Description: LightBB function
Class: Light BBCode
Replace text with BBCode by HTML tags
Author: By
Last change: Bugfixes
Date: 14 years ago
Size: 2,746 bytes
 

Contents

Class file image Download
<?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;
    }
   


?>