Показать сообщение отдельно

  #339  
Старый 29.03.2008, 22:17
Doom123
Постоянный
Регистрация: 11.11.2006
Сообщений: 834
Провел на форуме:
3941248

Репутация: 668


По умолчанию

Код:
   * И так представляю вашему вниманию класс который парсит BB коды,
  класс отличяется тем что очень прост в плане добовления 
  новых BB кодов а также его легко переделать для работы с БД.
   
  ИНСТРУКЦИЯ по добовлению новых ББ кодов:
  BB код представляет из себя массив содержаший в себе
  параметры BB кода.
  Пример:
 'color' => array (
   1 => '<font="$1">$2', 
   2 => '</font>',
   3 => '2',
   4 => '[ font=x1 ]x2[ /font ]',
   ),
  Ключ массва это имя BB кода, 
  ВНИМАНИЕ: ключ должен содержать буквы нижнего регистра(МАЛЕНЬКИЕ)   
  и цифры.	
  Ключ со значением 1 - это открытие HTML тэга,
  а также вы обозначаете $n значение пришедшие от пользователя
 с 1 и далее по возростания где n - число
  Пример: в теге <font color="red">str</font> 2 значения пришедших
  от пользователя это цвет (red) и строка (str)а значит будет так
  <font color"$1">$2</font>.
  Далее кдюч 2 - закрываюший тэг(Необязатльное поле) 
  можете его не указывать если тэг закрытый например тэг <hr>.
 3ий ключ в массиве это максимальное количество значений которые
 должны прийти от пользователя.
 И 4ый ключ это как будет выглидеть BB код а где xn опять же
 значения от пользоваетя где n - число от 1 и далее
PHP код:
<?php

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

class bbcode
{
    public 
$arrcode = array (
        
'color' => array (
            
=> '<font="$1">$2',
            
=> '</font>',
            
=> '2',
            
=> '[font=x1]x2[/font]',
            ),
        
'b' => array (
            
=> '<b>$1',
            
=> '</b>',
            
=> '1',
            
=> '[b]x1[/b]'
            
),
        
'link' => array (
            
=> '<a href="http://$1" target="_blank">$2',
            
=> '</a>',
            
=> '2',
            
=> '[link=x1]x2[/link]'
            
),
        
'size' => array (
            
=> '<font size="$1">$2',
            
=> '</font>',
            
=> '2',
            
=> '[size=x1]x2[/size]'
            
),
        
'hr' => array (
            
=> '<hr width="$1">',
            
=> '',
            
=> '1',
            
=> '[hr=x1]'
            
),
        
'center' => array (
            
=> '<div align="center">$1',
            
=> '</div>',
            
=> '1',
            
=> '[center]x1[/center]'
            
)
        );
    public function 
__construct($BBcodes)
    {
        
$this->BBcod($BBcodes);
    }
    public function 
BBcod($BBcodes)
    {
         
preg_match_all('#\[(\w+).*?\]#is'$BBcodes$pock);

         
$BBcodes htmlspecialchars($BBcodes);

        for (
$x 0$x <= count($pock['1']); $x++)
        {
            
$BB strtolower($pock['1'][$x]);
            
$str preg_quote($this->arrcode[$BB]['4'], '#');

            if (isset(
$this->arrcode[$BB]))
            {
                if (
strcasecmp($pock['1'][$x], 'link'))
                {
                    
$BBcodes str_ireplace('http://'''$BBcodes);
                }
                for (
$i 0$i <= $this->arrcode[$BB]['3']; $i++)
                {

                    
$str str_replace('x' $i'(.+?)'$str);
                }
                
$str '#' $str '#is';
            
$BBcodes preg_replace($str$this->arrcode[$BB]['1'] . $this->arrcode[$BB]['2'],$BBcodes);
            }


        }
        
$this->BBcodes $BBcodes;

    }
    public function 
__destruct() 
    {
        return 
"Идёт уничтожение";
    }
}
?>
Сильно не пинайте.. я старался 2 раза переписывал=)

Последний раз редактировалось Doom123; 29.03.2008 в 22:19..
 
Ответить с цитированием