[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: bbcode от twin'а
m4a1fox
Уважаемые эксперты и пользователи. Наверняка многие из вас в свой практики сталкивались с таким явление как bbcode. Предлагаю в этой теме, попытаться обсудить и давать советы по поводу bbcode от twin'а. Ссылка на уроки о bbcode от twin'а - тут.
Наверняка вы знаете множество примеров bbcode'ов. Вот ссылка на более полную подборку по ним - вот. Но и тут есть нюансы. Эти bbcode'ы используют JQuery. То есть например я не смог применить другой JQuery именно на странице где использую bbcode. Скорее это возможно просто я не знаю как...
Но это другой вопрос. Так вот. Если есть проблемы по поводу bbcode'а от twina - прошу, пишите. Будем вместе разбираться.



Спустя 2 минуты, 39 секунд (11.02.2011 - 19:21) Sopromatenot написал(а):
А что конкретно нужно?

Меня лично немного не устроил код twin'а и я родил свой.

Спустя 1 минута, 57 секунд (11.02.2011 - 19:23) m4a1fox написал(а):
Sopromatenot
Молодец - шаришь. Покажешь? или поделись) У меня тоже есть свой маленький на JS. Но больно он не надежен. Поэтому использую его только в админке.

Спустя 10 минут, 40 секунд (11.02.2011 - 19:33) m4a1fox написал(а):
Вернусь через 30 мин.

Спустя 30 минут, 12 секунд (11.02.2011 - 20:03) Sopromatenot написал(а):
У меня довольно урезанный функционал. Я для гостевой книги писал, а там много наворотов не стал делать. Значится:

- смайлики.
- стили текста: жирный, наклонный, подчёркнутый, перечёркнутый.
- оставляется исходное форматирование текста.
- защита от "длинного" слова.
- защита от непарных тегов.

У меня имеется гостевая книга и админка для неё. Админка имеет функцию редактирования текста поэтому было реализовано "два типа возвращаемого результата":

normal - делает замены bb-тегов на html теги. Стандартный вывод для пользователя.
admin - не делает замены bb-тегов на html теги. Вывод для админки, чтоб было видно что юзер там написал тегами и чтоб можно было грамотно редактировать.

Собственно код не очень то и шикарен, но функции свои отрабатывает.
Я этот код оформил отдельным php файлом и инклужу в гостевой. Перед инклудом нужно указать переменую $dir_smiles - папка с смайликами типа "user/img/smiles/".



<?php
// Обработка bbcode
function bb_tags($text, $status)
{
global $dir_smiles; // директория со смайликами

// Создаем массив bb-тегов смаликов

$bb_smile = array(
'[:)]',
'[:(]',
'[;)]',
'[:D]',
'[xX]',
'[oO]',
'[oo]',
'[..]',
'[BIC]',
'[Aa]'
);
// Создаем массив тегов HTML смайликов
$html_smile = array(
'<img src="'.$dir_smiles.'1.gif" />',
'<img src="'.$dir_smiles.'2.gif" />',
'<img src="'.$dir_smiles.'3.gif" />',
'<img src="'.$dir_smiles.'4.gif" />',
'<img src="'.$dir_smiles.'5.gif" />',
'<img src="'.$dir_smiles.'6.gif" />',
'<img src="'.$dir_smiles.'7.gif" />',
'<img src="'.$dir_smiles.'8.gif" />',
'<img src="'.$dir_smiles.'9.gif" />',
'<img src="'.$dir_smiles.'10.gif" />'
);
// Создаем массив bb-тегов
$bb_text = array(
'#\[b\](.*?)\[/b\]#si',
'#\[i\](.*?)\[/i\]#si',
'#\[u\](.*?)\[/u\]#si',
'#\[s\](.*?)\[/s\]#si');
// Создаем массив тегов HTML
$html_text = array(
'<b>$1</b>',
'<i>$1</i>',
'<u>$1</u>',
'<s>$1</s>');

// Обрабатываем текст по "стандарту"
if($status == 'normal')
{
// Оставляем изначальное форматирование и преобразуем спецсимволы
$text = str_replace("\r", "", $text);
$text = str_replace("\t", " ", $text);
$text = htmlspecialchars($text);
$text = nl2br($text);
$text = str_replace(' ', '  ', $text);
// Режем "длинное слово"
$text = wordwrap($text, 70);
// заменяем bb-теги текста
$text = preg_replace($bb_text, $html_text, $text);
// заменяем bb-теги смайликов
$text = str_ireplace($bb_smile, $html_smile, $text);
}

// выводим чистый текст без замены тегов на html (для админки)
if($status == 'admin')
{
// Оставляем изначальное форматирование и преобразуем спецсимволы
$text = str_replace("\r", "", $text);
$text = str_replace("\t", " ", $text);
$text = htmlspecialchars($text);
$text = nl2br($text);
$text = str_replace(' ', '  ', $text);

// Режем "длинное слово"
$text = wordwrap($text, 70);
}

// Возвращаем результат
return $text;
}
?>

Спустя 15 минут, 45 секунд (11.02.2011 - 20:19) m4a1fox написал(а):
прикольно. А как насчет загрузки фотографии и добавления ссылок?

Спустя 4 минуты, 18 секунд (11.02.2011 - 20:23) m4a1fox написал(а):
Просто у twin'а есть возможность вставлять картинки и ссылку.

Спустя 1 минута, 20 секунд (11.02.2011 - 20:25) m4a1fox написал(а):
Если есть желание, могу свой код выложить. Глянете может оцените)

Спустя 4 минуты, 4 секунды (11.02.2011 - 20:29) Sopromatenot написал(а):
Цитата (m4a1fox @ 11.02.2011 - 17:23)
Просто у twin'а есть возможность вставлять картинки и ссылку.

Этот функционал можно дописать(=докопипастить laugh.gif ) за один вечер.
Я просто упростил код Твина до своих нужд...

Что ты хочешь то конкретно?

Спустя 3 минуты, 57 секунд (11.02.2011 - 20:33) m4a1fox написал(а):
Возможность вставлять ссылку на выделенный тест и вставлять ссылку с изображением. Вот собственно и все.

Спустя 9 минут, 34 секунды (11.02.2011 - 20:42) m4a1fox написал(а):
Sopromatenot
Еще вопрос. А как у вас реализована меню кнопок на определенные теги?

Спустя 2 минуты, 38 секунд (11.02.2011 - 20:45) Sopromatenot написал(а):
Также как в Гостевой книги Твина:

<script type="text/javascript" language="javascript">  

function
tag(text1, text2)
{
if ((document.selection))
{
document.post.text2.focus();
document.post.document.selection.createRange().text = text1+document.post.document.selection.createRange().text + text2;
} else if(document.forms['post'].elements['text2'].selectionStart != undefined) {
var element = document.forms['post'].elements['text2'];
var str = element.value;
var start = element.selectionStart;
var length = element.selectionEnd - element.selectionStart;
element.value = str.substr(0, start) + text1 + str.substr(start, length) + text2 + str.substr(start + length);
} else document.post.text2.value += text1 + text2;
}

</script>

Спустя 4 минуты, 25 секунд (11.02.2011 - 20:49) m4a1fox написал(а):
Sopromatenot
Ух..... для меня это дремучий лес)

Спустя 4 минуты, 24 секунды (11.02.2011 - 20:54) m4a1fox написал(а):
Значит надо сначала сделать гостевую как twin учит.

Спустя 23 минуты, 38 секунд (11.02.2011 - 21:17) m4a1fox написал(а):
Sopromatenot
и еще вопрос. Скажите, а вы в БД заносите информацию или в файл?

Спустя 8 минут, 22 секунды (11.02.2011 - 21:26) Sopromatenot написал(а):
На файлах, за основу брал http://irbis-team.com/15/5

Спустя 1 минута, 1 секунда (11.02.2011 - 21:27) m4a1fox написал(а):
Sopromatenot
Последний вопрос снимается. Увидел Гостевую на SQL.

Спустя 31 секунда (11.02.2011 - 21:27) m4a1fox написал(а):
Sopromatenot
Хм... На файлах не интересно(

Спустя 1 час, 26 минут, 58 секунд (11.02.2011 - 22:54) twin написал(а):
прикольно.... а до конца читать не надо? можно из контекста выдернуть и сказать - это, сцук, твин писал, знач круто?

читайте, я для вас писал. Там все подробно.

Спустя 38 минут, 59 секунд (11.02.2011 - 23:33) m4a1fox написал(а):
twin
Я собственно ничего дурного не имел ввиду. Чего Вы так?

Спустя 6 минут, 31 секунда (11.02.2011 - 23:40) m4a1fox написал(а):
Sopromatenot
Скажите, а у вас реализовано удаление непарных тегов?

Спустя 38 минут, 42 секунды (12.02.2011 - 00:19) Sopromatenot написал(а):
Цитата (m4a1fox @ 11.02.2011 - 20:40)
Sopromatenot
Скажите, а у вас реализовано удаление непарных тегов?

Удаление нет, но защита имеется. Просто идёт обработка именно парных тегов.

Лучше действительно начни читать от сюда http://irbis-team.com/15/5
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.