replace заменяет только первое вхождение
Здравствуйте!
var text = $("[name='"+NameInput+"']").val(); var result1 = text.replace("[b]", "<b>").replace("[/b]", "</b>"); var result2 = result1.replace("[i]", "<i>").replace("[/i]", "</i>"); var result3 = result2.replace("[u]", "<u>").replace("[/u]", "</u>"); var result4 = result3.replace("[big]", "<big>").replace("[/big]", "</big>"); var result5 = result4.replace("[small]", "<small>").replace("[/small]", "</small>"); var result6 = result5.replace("[color red]", "<font color=\"red\">").replace("[/color red]", "</font>"); var result7 = result6.replace("[img]", "<img style=\"max-width: 200px; max-height: 200px;\" src=\"").replace("[/img]", "\">"); //retult = result.replace("[/b]", "</b>"); $("#"+IdDiv).html(result7); Суть проблеммы в том, что если в тексте есть только один (например [b]), то все нормально, а если несколько, то заменится только первая. Вот пример: //Ввели: [b]Привет мир1![/b] [i]Привет мир2![/i] [u]Привет мир3![/u] //Получили: <b>Привет мир1!</b> <i>Привет мир2!</i> <u>Привет мир3!</u> -------Все нормально----- //Ввели: [b]Привет мир1![/b] [b]Привет мир2![/b] [b]Привет мир3![/b] //Получили: <b>Привет мир1!</b> [b]Привет мир2![/b] [b]Привет мир3![/b] -------Не заменились все кроме первого ------ Как бороться? |
ох... где-то на хабре про это было, суть в том что, в данном случае replace ищет только первое вхождение, и заканчивает работу, пользуетесь regexp
как-то так replace(/\[b\]/g, "<b>") |
Вам надо начать с азов. Почитать справочник на этом сайте. Явно же не разбираетесь.
Вас бы наверное устроил ответ вроде: используйте вместо [b]"" - /\[b\]/g (upd как раз пока писал - предложили), но на само то деле данная задача решается иначе. Стоит погуглить, коючевые слова: bbcode javascript. Функция на коленке, для примера: <!DOCTYPE HTML> <html lang="ru-RU"> <head> <meta charset="UTF-8"> <title></title> </head> <body> <textarea name="" id="text" cols="30" rows="10"> click [b]Привет мир1![/b] [i]Привет мир2![/i] [u]Привет мир3![/u] </textarea> <script type="text/javascript"> var text = document.getElementById('text'); var pattern = { 'b': ['<b>','</b>'], 'i': ['<i>','</i>'], 'u': ['<u>','</u>'], 'big': ['<big>','</big>'], 'small': ['<small>','</small>'], 'color red':['<font color="red">','</font>'], 'img': ['<img style="max-width: 200px; max-height: 200px;" src="','">'] } function unBB( string, pattern ){ return string.replace( /\[(\/?)([^\]]+?)\]/gi, function(str, close, tag){ if(!pattern[tag]) return str; if(close) return pattern[tag][1]; return pattern[tag][0]; } ) } text.onclick = function(){ text.value = unBB( text.value, pattern ) } </script> </body> </html> |
Часовой пояс GMT +3, время: 12:03. |