Дополнительные BB-CODE теги

6.87K
.
аkа ПьяНый Ангел
тег цвета наверное лучше вот так
$var = preg_replace('#\[color=\#([a-zA-Z0-9]{6})\](.*?)\[/color\]#si', '<span style="color:#\1">\2</span>', $var);
.
Нет 6 мало, насчет color так делать нельзя потому что расчитывалось словесно тоже цвет писать а не его код. Я не знал сколько максимум выделить так и оставил.
.
аkа ПьяНый Ангел
ты еще расчитывал и на словестное...тогла лучше наверное заюзать два тега, ибо в словевестном юзать только анлийские символы, и во втором варианте анлийские символы и цмфры (но тут уже ограничить)
.
Просто хотелось чего то универсального 2 в одном
.
В ближайшее время переделаю тег ghide и выложу сюда.
.
Отредактировал и модифицировал код.

Перечисление изменений:
[color=цвет]текст[/color] - цветной текст, причем цвет задаем сами(после знака равно разрешено только 20 символов, менять не стал изза сохранения универсальности);
[ghide]текст[/ghide] - тест видимый для администрации, !модераторам! и для пользователя написавшего сообщение(более продуманное поведение кода, FlySelf за идею спасибо);

Собственно код который необходимо добавить в файл incfiles/func.php

// Это добавляем в функцию tags()
	$var = preg_replace('#\[color=([\#a-zA-Z0-9]{20})\](.*?)\[/color\]#si', '<span style="color:\1">\2</span>', $var);
    $var = preg_replace('#\[sub\](.*?)\[/sub\]#si', '<span style="vertical-align:sub">\1</span>', $var);
    $var = preg_replace('#\[sup\](.*?)\[/sup\]#si', '<span style="vertical-align:super">\1</span>', $var);
    $var = preg_replace('#\[offtop\](.*?)\[/offtop\]#si', '<div style="color:#ccc;margin:1px;padding:2px;border:1px dashed #ccc">\1</div>', $var);
    $var = preg_replace_callback('#\[hide\](.*?)\[/hide\]#si', 'bbHide', $var);
    $var = preg_replace_callback('#\[ghide\](.*?)\[/ghide\]#si', 'bbGHide', $var);
    $var = preg_replace('#\[\*\]#si', '<li/>', $var);
    $var = preg_replace('#\[hr\]#si', '<hr style="margin:2px;border:0;border-bottom:1px dashed #aaa"/>', $var);


// Это добавляем в notags(), Похожее естественно заменяем
	$var = strtr($var, array('' => '', '' => '', '' => '', '' => '', '' => '', '' => '', '' => '', '' => '', '' => '', '' => '', '' => '', '' => '', '' => '', '' => '',
    '
' => '', '
' => '', '[*]' => '', '[hr]' => '')); $var = preg_replace('{\[color=(?:.+?)\](.*?)\[/color\]}si','\1',$var); $var = preg_replace('{\[sub\](.*?)\[/sub\]}si','(sub:\1)',$var); $var = preg_replace('{\[sup\](.*?)\[/sup\]}si','(sup:\1)',$var); $var = preg_replace('{\[offtop\](.*?)\[/offtop\]}si','(\1)',$var); $var = preg_replace('{\[hide\](.*?)\[/hide\]}si','',$var); $var = preg_replace('{\[ghide=(.*?)\](.*?)\[/ghide\]}si','',$var);


// Добавляем после функции tags() следующие четыре
function w_gHide($gh){
	// gHide valid finction by SunRise
	// Данной функцией обрабатывать ВХОДЯЩИЕ данные
	global $user_id, $rights;
	if(preg_match('#\[ghide=(.*?)\](.*?)\[\/ghide\]#si',$gh))
	{
	    if($rights>=3)
	    {
            return $gh;
	    }
	    else
	    {
	    	return '[Не хулигань!]';
	  	}
	}
	elseif(preg_match('#\[ghide\](.*?)\[\/ghide\]#si',$gh))
	{
		return preg_replace('#\[ghide\](.*?)\[\/ghide\]#si', '[ghide=' . $user_id . ']\1[/ghide]', $gh);
	}
	else
	{
		return $gh;
	}
}

function e_gHide($gh){
	// gHide valid finction by SunRise
	// Данной функцией обрабатывать ИСХОДЯЩИЕ К РЕДАКТИРОВАНИЮ данные
	global $user_id, $rights;
	if(preg_match('#\[ghide=(.*?)\](.*?)\[\/ghide\]#si',$gh))
	{
	    if($rights>=3)
	    {
            return preg_replace('#\[ghide=(.*?)\](.*?)\[\/ghide\]#si', '[ghide=\1]\2[/ghide]', $gh);
	    }
	    else
	    {
	    	return preg_replace('#\[ghide=(?:.*?)\](.*?)\[\/ghide\]#si', '[ghide]\1[/ghide]', $gh);
	  	}
	}
	else
	{
		return $gh;
	}
}

function bbHide($hide) {
	// Hide finction by SunRise
	global $user_id;
	if(!$user_id)
	{
		return '<div style="background:#EAF1F4;border:1px solid #84BEE6;color:#2383A3;margin:2px;padding:2px">Скрытый текст! Могут прочесть только зарегистрированные пользователи.</div>';
	}
	else
	{
		return '<div style="background:#EAF1F4;border:1px solid #84BEE6;color:#2383A3;margin:2px;padding:2px">' . $hide[1] . '</div>';
	}
}

function bbGHide($ghide) {
	// gHide function by SunRise
	global $user_id, $rights;
 	if($user_id && $user_id == $ghide[1] || $rights>=3)
	{
		return '<div style="background:#FFDFD7;border:1px solid #CF3603;color:#B62703;margin:2px;padding:2px">' . $ghide[2] . '</div>';
	}
	else
	{
		return '<div style="background:#FFDFD7;border:1px solid #CF3603;color:#B62703;margin:2px;padding:2px">Скрытый текст! Могут прочесть только администрация и пользователь написавший сообщение.</div>';
	}
}


Добавились 2 функции необходимые для работы gHide тэга.
1. w_gHide() - ее следует обрабатывать текстовые данные перед записью в БД.
2. e_gHide() - ее следует обрабатывать текстовые данные перед перед подачей на редактирование в соответствующее текстовое поле.
Прикрепленные файлы:
.
Мего флудер
Если бы ты выложил файл func.php с уже добавлеными этими ништяками, было бы ваще айс
.
LeoMc
ЁжиГ В СтрингАх
у мя форум полетел((из=за этого
.
Как полетел? Бб-коды базу не трогают
.
ЁжиГ В СтрингАх
не полетел уж а посты не добовлялись новые дл тах пор пока стандартные файлы не закинул
Всего: 269