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, время: 11:22. |