Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » BBcode на своём сайте

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2

Открыть новую тему     Написать ответ в эту тему

Church



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Что-нить типа такого... Цитирование с Ru-board'а содрал, вставку тэгов с другого форума.... Что-нибудь ещё нужно? Сдерем
Тока сам JS-код лучше в отдельный файл вынести
 
http://www.wb-studio.net/bbcode/

Всего записей: 1199 | Зарегистр. 05-09-2003 | Отправлено: 00:44 31-10-2005 | Исправлено: Church, 01:11 31-10-2005
6epcepk



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Maxer
Я имел ввиду пользовательскую часть - кнопки, при нажатии на которые вставляются необходимые значения в поле.
 
Church
Только чёй-то работает вставка цитаты ...

----------
comming soon..

Всего записей: 2603 | Зарегистр. 02-05-2003 | Отправлено: 07:58 31-10-2005 | Исправлено: 6epcepk, 07:59 31-10-2005
Church



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Только чёй-то работает вставка цитаты ...

Не понял... Она и должна работать... Можно убрать... Там одна кнопка, с помощью которой производится форматирование текста в текстовом поле aka b,u,i и ссылка как на этом форуме, которая "цитирует" выделенный текст на странице.

Всего записей: 1199 | Зарегистр. 05-09-2003 | Отправлено: 13:07 31-10-2005
6epcepk



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Church
 
Ой, я очепятался (:  
 
Имелось в виду, что работает только цитирование.

----------
comming soon..

Всего записей: 2603 | Зарегистр. 02-05-2003 | Отправлено: 22:24 31-10-2005
Church



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
6epcepk
Ок.. Скорее всего из-за разных браузеров.. Я делал под IE5.
Может так заработает: http://www.wb-studio.net/bbcode/ - ссылка та же, но теперь используются bbcode с phpbb и цитированию тоже самое отсюда.

Всего записей: 1199 | Зарегистр. 05-09-2003 | Отправлено: 01:39 01-11-2005
6epcepk



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Church
А сам "обработчик" данных, которые поступят из формы? Или ты используешь тот, что приведен на предыдущей странице?

Всего записей: 2603 | Зарегистр. 02-05-2003 | Отправлено: 20:25 01-11-2005
Church



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
6epcepk
Я сейчас это не использую, но как я вижу тебе подойдут те, которые на прошлой страницы. Только смотри, чтобы всего хватало и чего не хватает - добавь по подобию

Всего записей: 1199 | Зарегистр. 05-09-2003 | Отправлено: 20:56 01-11-2005
Kot_lex



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
плагин для смарти преобразующий bbcode в html

Всего записей: 20 | Зарегистр. 09-07-2005 | Отправлено: 13:06 02-11-2005
Maxer



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
вот открученное от LDU, и переделаное. почти как на борде ;) может кому-то нужно будет.
использование: bb($переменная_с_текстом);
 
http://rapidshare.de/files/8769979/parse_bb.php.html

----------
красный феррари

Всего записей: 5225 | Зарегистр. 04-05-2004 | Отправлено: 20:23 07-12-2005 | Исправлено: Maxer, 20:27 07-12-2005
CyClon

Newbie
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Выкладываю просто функцию, правильную скажем:
 

Код:
<?php
 
function bb_to_html($content) {
 
// Переносы строк
$content = str_replace("\n", "<br />", $content);
// Жирный, Курсив (Наклонный), Подчеркнутый, Перечеркнутый
$content = preg_replace("/\[B\](.+?)\[\/B\]/", "<b>\\1</b>", $content);
$content = preg_replace("/\[I\](.+?)\[\/I\]/", "<i>\\1</i>", $content);
$content = preg_replace("/\[U\](.+?)\[\/U\]/", "<u>\\1</u>", $content);
$content = preg_replace("/\[S\](.+?)\[\/S\]/", "<s>\\1</s>", $content);
// Размер шрифта
$content = preg_replace("/\[SIZE=(.+?)\](.+?)\[\/SIZE\]/", "<font size=\"\\1\">\\2</font>", $content);
// Цвет шрифта
$content = preg_replace("/\[COLOR=(.+?)\](.+?)\[\/COLOR\]/", "<font color=\"\\1\">\\2</font>", $content);
// Выравнивание (По левому краю, По центру, По правому краю)
$content = preg_replace("/\[LEFT\](.+?)\[\/LEFT\]/", "<div align=\"left\">\\1</div>", $content);
$content = preg_replace("/\[CENTER\](.+?)\[\/CENTER\]/", "<div align=\"center\">\\1</div>", $content);
$content = preg_replace("/\[RIGHT\](.+?)\[\/RIGHT\]/", "<div align=\"right\">\\1</div>", $content);
// Вставить изображение
$content = preg_replace("/\[IMG\](.+?)\[\/IMG\]/", "<img src=\"\\1\" border=\"0\">", $content);
// Цитата
$content = preg_replace("/\[Q\](.+?)\[\/Q\]/", "<b>Цитата:</b><br /><div class=\"quote\">\\1</div>", $content);
// Смайлики
$content = preg_replace("/\*(.+?)\*/", "<img src=\"/images/smiles/\\1.gif\" border=\"0\">", $content);
 
return $content;
 
}
 
// Тест функции
$text = "TEXT";
$text = bb_to_html($text);
echo $text;
 
?>

 
И немного не правильную, но для БК
 

Код:
function vbcode($message) {
 
$message = str_replace("\n", "<br>", $message);
 
$message = preg_replace('/(\[b\])(.+?)(\[\/b\])/', '<b>\\2</b>',$message);
$message = preg_replace('/(\[i\])(.+?)(\[\/i\])/', '<i>\\2</i>',$message);
$message = preg_replace('/(\[u\])(.+?)(\[\/u\])/', "<u>\\2</u>", $message);
 
$message = preg_replace('/(\[quote\])(.+?)(\[\/quote\])/', "<br><b><a class=quote>Цитата:</a></b><br><div class=\"news_quote\">\\2</div>", $message);
$message = preg_replace('/(\[img\])(.+?)(\[\/img\])/', "<img border=0 src=\"\\2\">", $message);
 
$message = preg_replace('/(\[url\])(.+?)(\[\/url\])/', "<a href=\"\\2\" target=\"_blank\">\\2</a>", $message);
$message = preg_replace('/(\[url=(.+?)\])(.+?)(\[\/url\])/', "<a href=\"\\2\" target=\"_blank\">\\3</a>", $message);
 
$message = preg_replace('/(\[center\])(.+?)(\[\/center\])/', '<center>\\2</center>',$message);
 
$message = preg_replace("/\[inf\](.*)\[\/inf\]/iseU", "LoadInfo(\"\\1\")", $message);
 
$message = preg_replace('/(\[klan\])(.+?)(\[\/klan\])/', "<img width=\"24\" height=\"15\" src=\"http://img.combats.ru/i/klan/\\2.gif\" alt=\"\">", $message);
$message = preg_replace('/(\[klan=(.+?)\])(.+?)(\[\/klan\])/', "<img width=\"12\" height=\"15\" src=\"images/align/align\\2.gif\"><img width=\"24\" height=\"15\" src=\"http://img.combats.ru/i/klan/\\3.gif\" alt=\"\">", $message);
 
$message = preg_replace('/(\[pers\])(.+?)(\[\/pers\])/', "<nobr><b>\\2</b> <a href=\"http://capitalcity.combats.ru/inf.pl?login=\\2\" target=\"_blank\"><img width=\"12\" height=\"11\" border=\"0\" src=\"images/inf.gif\" alt=\"\"></a></nobr>", $message);
 
$message = preg_replace('/(\[pers=(.+?)\|(.+?)\])(.+?)(\[\/pers\])/', "<nobr><b>\\4</b>\[\\2\]<a href=\"http://capitalcity.combats.ru/inf.pl?login=\\4\" target=\"_blank\"><img width=\"12\" height=\"11\" border=\"0\" src=\"images/inf/inf\\3.gif\" alt=\"\"></a></nobr>", $message);
 
$message = preg_replace('/(\[pers=(.+?)\])(.+?)(\[\/pers\])/', "<nobr><b>\\3</b>\[\\2\]<a href=\"http://capitalcity.combats.ru/inf.pl?login=\\3\" target=\"_blank\"><img width=\"12\" height=\"11\" border=\"0\" src=\"images/inf.gif\" alt=\"\"></a></nobr>", $message);
 
$message = preg_replace('/(\[block\])(.+?)(\[\/block\])/', '<a class="block">\\2</a>',$message);
 
$message = preg_replace('/(\[htext=(.+?),(.+?)\])(.+?)(\[\/htext\])/', '<a id=\'bhidden_\\2\' style="CURSOR: pointer" onclick="show_hide(\'hidden_\\2\',\'<b>\\3</b>\',\'<b>скрыть</b>\')\;"><b>\\3</b></A><span id=\'hidden_\\2\' style="DISPLAY: none"><br />\\4</span>', $message);
 
$message = preg_replace('/(\[color=(.+?)\])(.+?)(\[\/color\])/', '<font color=\"\\2\">\\3</font>',$message);
 
$message = preg_replace('/(\[size=(.+?)\])(.+?)(\[\/size\])/', '<font size=\"\\2\">\\3</font>',$message);
 
$message = preg_replace('/(\[city\])(.+?)(\[\/city\])/', "<img src=\"images/cities/small/\\2.gif\" alt=\"\"><b>\\2City</b>", $message);
$message = preg_replace('/(\[city=(.+?)\])(.+?)(\[\/city\])/', "<img src=\"images/cities/small/\\2.gif\" alt=\"\"><b>\\3</b>", $message);
 
$message = preg_replace('/(\[align\])(.+?)(\[\/align\])/', "<img height=\"15\" src=\"images/align/align\\2.gif\">", $message);
 
$message = preg_replace('/(\*(.+?)\*)/', "<img src=\"images/smiles/\\2.gif\" border=\"0\">", $message);
 
$message = stripslashes($message);
 
return $message;
 
}

Всего записей: 13 | Зарегистр. 11-01-2006 | Отправлено: 19:02 25-01-2006
Ausw



Moderator
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Поднимаю стару тему..
 
Столкнулся с такой проблемой -  
Либо ссылки заключенные в BB-теги, либо без них. А оба чтоб и так, и так - никак не работает.
Я что-то делаю неправильно, поскольку на этом форуме все работает в обоих случаях.
Подозреваю, что обрабатывается двумя  
Гуглил, куча вариантов, но в итоге совместно никак не работают.
Код ниже, но чтобы не вводить в заблуждение, может у кого есть нормальное гоотвое решение?
 

Код:
  $textcomm=eregi_replace("\\[url\\]www.([^\\[]*)\\[/url\\]","<a href=\"http://www.\\1\" target=\"_blank\">\\1</a>",$textcomm);
  $textcomm=eregi_replace("\\[url\\]([^\\[]*)\\[/url\\]","<a href=\"\\1\" target=\"_blank\">\\1</a>",$textcomm);
  $textcomm=eregi_replace("\\[url=http://([^\\[]+)\\]([^\\[]*)\\[/url\\]","<a href=\"http://\\1\" target=\"_blank\">\\2</a>",$textcomm);
  $textcomm=eregi_replace("((http|mailto|ftp):\/\/[^[:space:]<>]{1,})", "<a href=\"\\1\" target=\"_blank\">\\1</a>",$textcomm);  

 
 
 
Значится, нужна такая штука, чтоб одновремнно обрабатывались ссылки с  

Код:
 
[url=http://domain.com]Сайт[/url]
[url]http://domain.com[/url]
http://domain.com  
www.domain.com
 

результаты соответственно нужны такие:
Сайт
http://domain.com
http://domain.com
www.domain.com
 
у меня же получается что-то вроде

Код:
 
http://domain.com" target="_blank">Сайт
http://domain.com" target="_blank">http://domain.com
http://domain.com
www.domain.com  

 
ну или как-то так. короче, бардак. получается что ссылка обрабатывается два раза.
последнюю строчку мождно наверх вынести, токгда обрабатывается подругму,но тоже два раза.
Что я делаю не так? Спасибо

Всего записей: 7371 | Зарегистр. 12-07-2001 | Отправлено: 20:05 16-11-2008 | Исправлено: Ausw, 20:12 16-11-2008
Ausw



Moderator
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Походу, уже никого не интересует эта тема Ну еще до кучи - автозакрытие тегов не хватает, в некоторых случаях можно запросто напартачить внешний вид страницы незакрытым тегом, еще яву скрипт можно впихнуть походу.
 
короче, отказался от теговв URL и остановился на таком решении

Код:
 
$textcomm=eregi_replace("((http|https|ftp):\/\/[^[:space:]<>]{1,})", "<a href=\"\\1\" target=\"_blank\">\\1</a>",$textcomm);    
$textcomm = eregi_replace("www.([^[:space:]]*)", "<a href=\"http://www.\\1\" target=\"_blank\">www.\\1</a> ", $textcomm);

ссылки хавает до пробела, протестировал, врде рабоатет исправно.
тем не менее, если кто поделится рабочими примерами (автоссылки + bb-code) с благодарностью приму.

Всего записей: 7371 | Зарегистр. 12-07-2001 | Отправлено: 16:30 17-11-2008 | Исправлено: Ausw, 19:02 17-11-2008
Paha_W



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Ausw
посмотри тут вроде описывается работы как с bbcode так и автоматический парсинг.
чччp://www.xbb.uz/docs/properties.bb
если посмотреть в самом скрипте то там тег "А" и preg_autolinks вроде работают.

----------
Far Far Away
У каждого в голове свои тараканы...

Всего записей: 440 | Зарегистр. 26-05-2004 | Отправлено: 05:37 18-11-2008 | Исправлено: Paha_W, 05:38 18-11-2008
Church



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
чччp://www.xbb.uz/docs/properties.bb  

Там вообще другой алгоритм используется.. Правда, хороший.. не поспорю )

Всего записей: 1199 | Зарегистр. 05-09-2003 | Отправлено: 07:05 18-11-2008
Paha_W



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Church
я думаю, что алгоритм всегда можно изменить, а в данном случае для человека важен результат!

Всего записей: 440 | Зарегистр. 26-05-2004 | Отправлено: 07:59 18-11-2008
Church



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
тем не менее, если кто поделится рабочими примерами (автоссылки + bb-code) с благодарностью приму.  

 
Не знаю насколько рабочие... Вроде бы работает...
Только смотри, у тебя еще в [img] будет бяка, если используешь этот код.. но суть думаю ясна, как это обходится.
 

Код:
 
function replace_url_f1($matches) {
    return '[url='.base64_encode($matches[1]).']'.base64_encode($matches[2]).'[/url]';
}
 
function replace_url_f2($matches) {
    $b = base64_encode($matches[1]);
    return '[url='.$b.']'.$b.'[/url]';
}
 
function replace_url_back($matches) {
    return '<a href="'.base64_decode($matches[1]).'" target="_blank">'.base64_decode($matches[2]).'</a>';
}
 
$textcomm = preg_replace_callback('/\[url=([^\]]+)\]([^\[]+)\[\/url\]/','replace_url_f1',$textcomm);
$textcomm = preg_replace_callback('/\[url]([^\[]+)\[\/url\]/','replace_url_f2',$textcomm);
 
 
$textcomm=eregi_replace("((http|https|ftp):\/\/[^[:space:]<>]{1,})", "<a href=\"\\1\" target=\"_blank\">\\1</a>",$textcomm);    
$textcomm = eregi_replace("www.([^[:space:]]*)", "<a href=\"http://www.\\1\" target=\"_blank\">www.\\1</a> ", $textcomm);  
 
$textcomm = preg_replace_callback('/\[url=([^\]]+)]([^\[]+)\[\/url\]/','replace_url_back',$textcomm);
 

 
 
Добавлено:

Цитата:
я думаю, что алгоритм всегда можно изменить, а в данном случае для человека важен результат!

Под разными алгоритмами я имел ввиду, что в xbb используются конечные автоматы, а тут на регулярках сочиняют..
 
Проверил текущую версию xbb - парсит ссылки правильно. Но два года назад были ошибки

Всего записей: 1199 | Зарегистр. 05-09-2003 | Отправлено: 08:00 18-11-2008 | Исправлено: Church, 08:03 18-11-2008
Ausw



Moderator
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Church
Да, супер, большое спасибо! Багов не замечено )
Ну про IMG я временно отложил, разберусь с ним позже.

Всего записей: 7371 | Зарегистр. 12-07-2001 | Отправлено: 18:20 22-11-2008
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2

Компьютерный форум Ru.Board » Интернет » Web-программирование » BBcode на своём сайте


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru