Эта версия CanoScan Toolbox работает в системах Windows 98,
Windows 2000 Professional, Windows Me, Windows XP Home Edition
и Windows XP Professional.
Работа с BB тегами через JS
И еще иногда возникает проблема когда какой-то BB тег не был закрыт например тег
Пример текста:
Код:
Как пропарсить строку чтобы нашло каждый открывающийся тег и который не закрывается и автоматом доставило в конец с учетом их открытия.
Правленым вариантом предложения будет такой текст:
Код:
Эта версия CanoScan Toolbox работает в системах Windows 98,
Windows 2000 Professional, Windows Me, Windows XP Home Edition
и Windows XP Professional.[ /b][ /s]
Windows 2000 Professional, Windows Me, Windows XP Home Edition
и Windows XP Professional.[ /b][ /s]
а не:
Код:
Эта версия CanoScan Toolbox работает в системах Windows 98,
Windows 2000 Professional, Windows Me, Windows XP Home Edition
и Windows XP Professional. [ /s] [ /b]
Windows 2000 Professional, Windows Me, Windows XP Home Edition
и Windows XP Professional. [ /s] [ /b]
А алгоритмы - они в любом языке алгоритмы. Например тот-же алгоритм стека...
Код:
function bb2html(message) {
// message = message.replace(/[ ]{2,}/," ");
/* "'<script[^>]*?>.*?</script>'si","'<[\/\!]*?[^<>]*?>'si","'([\r\n])[\s]+'","'&(quot|#34);'i","'&(amp|#38);'i","'&(lt|#60);'i","'&(gt|#62);'i","'&(nbsp|#160);'i","'&(iexcl|#161);'i","'&(cent|#162);'i","'&(pound|#163);'i","'&(copy|#169);'i","'&#(\d+);'e"*/
message = message.replace(/<(.*)>(.*)<\/(.*)>/gi,"$2");
message = message.replace(/\[([\w]+)\]\[\/([\w]+)\]/g,"");
message = message.replace(/(<)(.*)(>)/,"<$2>");
message = message.replace(/[\n]/gi,"<br />");
message = message.replace(/\[p\](.*?)\[\/p\]/g,"<p class='item'>$1</p>");
message = message.replace(/\[b\](.*?)\[\/b\]/g,"<b>$1</b>");
message = message.replace(/\[i\](.*?)\[\/i\]/g,"<i>$1</i>");
message = message.replace(/\[u\](.*?)\[\/u\]/g,"<u>$1</u>");
message = message.replace(/\[align=([\w]+)\](.*?)\[\/align\]/g,"<div align='$1'>$2</div>");
message = message.replace(/\[color=([\#a-z0-9]*?)\](.*?)\[\/color\]/g,"<font style=\"color:$1;\">$2</font>");
message = message.replace(/\[bgcolor=([\#a-z0-9]*?)\](.*?)\[\/bgcolor\]/g,"<font style=\"background-color:$1;\">$2</font>");
message = message.replace(/\[size=([0-9]+)\](.*?)\[\/size\]/g,"<font style=\"font-size:$1pt;\">$2</font>");
message = message.replace(/\[font=([a-z\-\ ]*?)\](.*?)\[\/font\]/g,"<font style=\"font-family:$1;\"'>$2</font>");
message = message.replace(/\[acr=(\"(.+)\")\]([a-zа-я0-9]+)\[\/acr\]/gi,"<acronym title=\"$2\" lang=\"ru\">$3</acronym>");
//message = message.replace(/\[acr=([a-zа-я0-9\ ]*?)\]([a-zа-я0-9]+)\[\/acr\]/g,"<acronym title=\"\" lang=\"ru\">$2</acronym>");
message = message.replace(/\[list(=([\w]+)?)?\](.*?)\[\/list\]/gim,"<ul class='$2'>$3</ul>");
message = message.replace(/\[\*\](.*?)/gim,"<li>$1");
message = message.replace(/\[url=(.*?)\](.*?)\[\/url\]/g,"<a href='$1' target='blank'>$2</a>");
message = message.replace(/\[mail=(.*?)\](.*?)\[\/mail\]/g,"<a href='mailto:$1'>$2</a>");
message = message.replace(/\[img=(.*?)(\ ?)(float=([a-z]+))(\ ?)(size=(([0-9]+),([0-9]+)))?(\ ?)(border=([0-9]+)?)?\]/g,"<img src='../upload/images/$1' style='border:$12px solid #000;float:$4;width:$8px;height:$9px;'>");
message = message.replace(/\[file=([0-9]+)\]/g,"<a href='#'>Скачать файл</a>");
return (message);
}
// message = message.replace(/[ ]{2,}/," ");
/* "'<script[^>]*?>.*?</script>'si","'<[\/\!]*?[^<>]*?>'si","'([\r\n])[\s]+'","'&(quot|#34);'i","'&(amp|#38);'i","'&(lt|#60);'i","'&(gt|#62);'i","'&(nbsp|#160);'i","'&(iexcl|#161);'i","'&(cent|#162);'i","'&(pound|#163);'i","'&(copy|#169);'i","'&#(\d+);'e"*/
message = message.replace(/<(.*)>(.*)<\/(.*)>/gi,"$2");
message = message.replace(/\[([\w]+)\]\[\/([\w]+)\]/g,"");
message = message.replace(/(<)(.*)(>)/,"<$2>");
message = message.replace(/[\n]/gi,"<br />");
message = message.replace(/\[p\](.*?)\[\/p\]/g,"<p class='item'>$1</p>");
message = message.replace(/\[b\](.*?)\[\/b\]/g,"<b>$1</b>");
message = message.replace(/\[i\](.*?)\[\/i\]/g,"<i>$1</i>");
message = message.replace(/\[u\](.*?)\[\/u\]/g,"<u>$1</u>");
message = message.replace(/\[align=([\w]+)\](.*?)\[\/align\]/g,"<div align='$1'>$2</div>");
message = message.replace(/\[color=([\#a-z0-9]*?)\](.*?)\[\/color\]/g,"<font style=\"color:$1;\">$2</font>");
message = message.replace(/\[bgcolor=([\#a-z0-9]*?)\](.*?)\[\/bgcolor\]/g,"<font style=\"background-color:$1;\">$2</font>");
message = message.replace(/\[size=([0-9]+)\](.*?)\[\/size\]/g,"<font style=\"font-size:$1pt;\">$2</font>");
message = message.replace(/\[font=([a-z\-\ ]*?)\](.*?)\[\/font\]/g,"<font style=\"font-family:$1;\"'>$2</font>");
message = message.replace(/\[acr=(\"(.+)\")\]([a-zа-я0-9]+)\[\/acr\]/gi,"<acronym title=\"$2\" lang=\"ru\">$3</acronym>");
//message = message.replace(/\[acr=([a-zа-я0-9\ ]*?)\]([a-zа-я0-9]+)\[\/acr\]/g,"<acronym title=\"\" lang=\"ru\">$2</acronym>");
message = message.replace(/\[list(=([\w]+)?)?\](.*?)\[\/list\]/gim,"<ul class='$2'>$3</ul>");
message = message.replace(/\[\*\](.*?)/gim,"<li>$1");
message = message.replace(/\[url=(.*?)\](.*?)\[\/url\]/g,"<a href='$1' target='blank'>$2</a>");
message = message.replace(/\[mail=(.*?)\](.*?)\[\/mail\]/g,"<a href='mailto:$1'>$2</a>");
message = message.replace(/\[img=(.*?)(\ ?)(float=([a-z]+))(\ ?)(size=(([0-9]+),([0-9]+)))?(\ ?)(border=([0-9]+)?)?\]/g,"<img src='../upload/images/$1' style='border:$12px solid #000;float:$4;width:$8px;height:$9px;'>");
message = message.replace(/\[file=([0-9]+)\]/g,"<a href='#'>Скачать файл</a>");
return (message);
}
На стили в тегах внимания не обращай - лень было наводить красоту.
Удачи!
По второму вопросу думать не буду :) Опять, та же лень ))
спасибо )) по второму вопросу можно реализовать и на пхп все равно
Или быть может после такого преобразования ты данные с клиента не проверяешь и пишешь сразу в БД?
alekciy, ну может это для того, чтобы сразу предварительный просмотр делаллся.. Средствами JS. Я б тоже такое сделал, да лень=)
Да возьмите кусок с любого (почти))) форума и посмотрите, или (что ещё лучше) воткните его к себе, если работоспособность его полностью всех устраивает.
Цитата: UAS
alekciy, ну может это для того, чтобы сразу предварительный просмотр делаллся.. Средствами JS. Я б тоже такое сделал, да лень=)
Реализовал подобную "фичу" для последнего заказчика, вышло замечательно.
Если кому интересно, могу выложить php + js код (в личку).