BBcode class

Discussion in 'PHP' started by Doom123, 27 Mar 2008.

  1. Doom123

    Doom123 Elder - Старейшина

    Joined:
    11 Nov 2006
    Messages:
    749
    Likes Received:
    244
    Reputations:
    22
    эм решил написать класс ббкодов...
    вот что вышло ...

    PHP:
    <?php

    /**
     * @author @FATAL@
     * @copyright 2008
     */

    class BBcode
    {
        private 
    $BBarr = array(
            
    '#\[B\](.*?)\[/B\]#ixs' => '<b>$1</b>', 
            
    '#\[IMG\](.*? \.jpg|.*? \.gif)\[/IMG\]#ixs' => '<img src="$1">', 
            
    '#\[S\](.*?)\[/S\]#ixs' => '<s>$1</s>', 
            
    '#\[LINK=(www\..*?|http://.*?)\](.*?)\[/LINK\]#xis' => '<a href="$1" target="_blank">$2</a>', 
            
    '#\[LEFT\](.*?)\[/LEFT\]#xis' => '<div align="left">$1</div>', 
            
    '#\[CENTER\](.*?)\[/CENTER\]#xis' => '<div align="center">$1</div>', 
            
    '#\[RIGHT\](.*?)\[/RIGHT\]#xis' => '<div align="right">$1</div>', 
            
    '#\[I\](.*?)\[/I\]#xis' => '<em>$1</em>'
            
    );

        public function 
    bbcod($BBcode)
        {
            
    $BBcode = htmlspecialchars($BBcode);
            foreach (
    $this->BBarr as $BB => $BBHTM)
            {
                if (
    $BB === '#\[LINK=(www\..*?|http://.*?)\](.*?)\[/LINK\]#xis')
                {
                    if (
    preg_match('#\[LINK=(www\..*?|http://.*?)\](.*?)\[/LINK\]#xis', $BBcode, $pock))
                    {
                        if (
    $pock['2'] === '')
                        {
                            
    $BBcode = preg_replace($BB, '<a href="$1" target="_blank">$1</a>', $BBcode);
                        }

                    }


                }
                
    $blank = '';
                while (
    $BBcode !== $blank)
                {
                    
    $blank = $BBcode;
                    
    $BBcode = preg_replace($BB, $BBHTM, $BBcode);
                }

            }
            echo 
    $BBcode;
        }

    }
    ?>
    жду критики....

    для проверки работы

    PHP:
    $str = "[i][b]Test[/b][/i]";
    $bb = new BBcode;
    $bb->bbcod($str);
     
    #1 Doom123, 27 Mar 2008
    Last edited: 27 Mar 2008
    2 people like this.