|
Постоянный
Регистрация: 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 (
1 => '<font="$1">$2',
2 => '</font>',
3 => '2',
4 => '[font=x1]x2[/font]',
),
'b' => array (
1 => '<b>$1',
2 => '</b>',
3 => '1',
4 => '[b]x1[/b]'
),
'link' => array (
1 => '<a href="http://$1" target="_blank">$2',
2 => '</a>',
3 => '2',
4 => '[link=x1]x2[/link]'
),
'size' => array (
1 => '<font size="$1">$2',
2 => '</font>',
3 => '2',
4 => '[size=x1]x2[/size]'
),
'hr' => array (
1 => '<hr width="$1">',
2 => '',
3 => '1',
4 => '[hr=x1]'
),
'center' => array (
1 => '<div align="center">$1',
2 => '</div>',
3 => '1',
4 => '[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..
|