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.