Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Удалить теги из текста (https://javascript.ru/forum/events/32086-udalit-tegi-iz-teksta.html)

alerzo 02.10.2012 21:39

Удалить теги из текста
 
Помогите с помощью js удалить все теги из текста и ссылки + изображения вставленные ссылками..оставить в тексте нужно только сам текст + теги переноса.

Dim@ 02.10.2012 22:24

alerzo,
блин в чем проблема сделать самому настолько элементарную вещь (или вы не знаете JS?)? если никто не ответит (не даст кода) не обижайтесь, никому просто не хочется делать настолько простую и нудную работу

act 02.10.2012 22:33

Нда =)
alert('<div>text</div>'.replace(/<\/?[^>]+>/g,''));

JQuery
alert($('<div>text</div>').text());

cyber 02.10.2012 22:35

Цитата:

Сообщение от alerzo (Сообщение 207844)
Помогите с помощью js удалить все теги из текста и ссылки + изображения вставленные ссылками..оставить в тексте нужно только сам текст + теги переноса.

если нужно это сделать при генирации страници то лучше вообще использовать пхп

alerzo 03.10.2012 12:49

Делал вот так http://learn.javascript.ru/play/Vkgxn
var str = '<p>тут текст<br><br /></p>'var result = str.replace(/(?!(\<br\>|\<br\s\/\>))<\/?[^>]+>/g, '');
с простой строкой получается но если вставлять большой текст то не выходит

cyber 03.10.2012 14:05

вот так нужно
var result = str.replace(/<[^>]+>/g,'');

var str = '<p>приве<br><br />т</p>'
    var result = str.replace(/<[^>]+>/g,'');
      alert(result)

alerzo 03.10.2012 19:19

не получается
 
Цитата:

Сообщение от cyber (Сообщение 207962)
вот так нужно
var result = str.replace(/<[^>]+>/g,'');

var str = '<b>Оценка читателей:</b> <br><br>


<div align=center><a href="http://www.mi52ma.ru/cat5211p1/?partner=xstory&link=xs" target="_blank"><img src="/bn/mo_468x60_11.gif" width=468 height=60 border=0></a></div><br><div style="text-align: justify;">

<br>
<br>текст!! </div>

<br>

<script type="text/javascript">
teasernet_blockid = 270269;
teasernet_padid = 20359;
</script>
<script type="text/javascript" src="http://emierete.com/javascript/O526Swb7fIr0"></script>'
    var result = str.replace(/<[^>]+>/g,'');
      alert(result)

не получается

cyber 03.10.2012 21:47

alerzo, это че курить нужно что бы такой бред написать?:blink:

alerzo 03.10.2012 22:51

я просто вставил текст для примера, очистит ли он все кроме текста или нет..как результат он не работает.
я же явно в тексте темы написал требуется скрипт для очистки текста от всех хтмл тегов кроме тегов переноса..=)

cyber 04.10.2012 00:06

нет , вы не поняли , у вас скрипт вне тэга скрипт как минимум у вас хтмл перемешан с js - не могу это описать ...

alerzo 04.10.2012 13:53

Решил проблему заменой по регулярному выражению на пустоту!
подскажите, я использую вот такое вот регулярное (?i)<(div|a|img|\/div|\/a).*?>
как сделать лучше чтобы остались только теги переноса,выделение жирным шрифтом..

sotik 12.03.2014 14:17

Здравствуйте.
В textarea вывел текст без тегов.
А как теперь добавить <br> в местах переноса текста,чтоб сохранить измененный текст?
Подскажите пожалуйста.

рони 12.03.2014 14:47

sotik,
:-?
textarea.value.replace(/[\r\n]+/g,'<br>')

sotik 12.03.2014 20:48

Спасибо огромное,но я не знаю каак это использовать... :(
Вот что получилось после ajax запроса:
creatElem('textarea', 'block_id'); //перевод с помощь функции в текстариа
var ow = xmlhttp.responseText;
var res = ow.replace(/<[^>]+>/g,''); //убираем теги
var result = res.textarea.value.replace(/[\r\n]+/g,'<br>'); //возвращаем теги обратно :)
document.getElementById('block_id').innerHTML = result; //выводим результат, - в итоге пусто.
`
Подскажите пожалуйста синтаксис написания там где надо обратно теги добавить.

рони 12.03.2014 20:58

sotik,
вы лучше покажите что на входе у вас и что хотите получить на выходе.
а то строка 4 ересь какая-то.

sotik 12.03.2014 21:33

Конечно ересть... :)
Ну например:
в этом контейнере выводится инфа из файла...
<div id="block_id" class="insider"></div>
Дневник за 2014 год<br>
10.09 5<br>

Поскольку с тегами редактировать неудобно я их убираю, перевожу контейнер в текстариа и добавляю инфу:
15ю09 4
Теперь все это мне надо записать обрано в файл,но уже с добавлеными тегами <br> после каждой строчки,иначе в последствии все выведится в одну строку.
Вот и получается что в 4 строке кода я не понимаю как это синтаксически сделать.

рони 12.03.2014 21:52

Цитата:

Сообщение от sotik
Поскольку с тегами редактировать

а так редактировать ?
<div  onblur="alert(this.innerHTML)" contenteditable   id="block_id" class="insider">
Дневник за 2014 год<br>
 10.09 5<br>
</div>

sotik 12.03.2014 22:13

Очень интересное решение. :)
Правда я пока добился лишь того,что редактируются сами клики.
Как вариант все-таки хотелось бы решение как эти теги обратно вернуть, правда там нужно будет еще считать в переменную содержимое текстариа.
А в вашем варианте как происходит запись в файл? просто автоматически?

sotik 12.03.2014 22:19

Не-а,автоматически не записывается.. :)
Все-таки последовательно лучше,а то у меня весь фокус теряется, да и теги эти опять.
Вобщем как правильно в том случае записать 4 строку.

рони 12.03.2014 22:32

sotik,
:blink: вводите в текстария получаите в диве
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  .insider{
    background-color: #D2B48C;
    width: 300px;
    color: #FFFFFF;
  }

  </style>
</head>

<body>

<textarea id="test" name=""  onkeyup="foo(this.value)" cols="35"  rows="5">
Дневник за 2014 год
10.09 5
</textarea>
<div id="block_id" class="insider"  onclick="alert(this.innerHTML)">
Дневник за 2014 год<br>
 10.09 5<br>
</div>

 <script>
function foo(val) {
    var block = document.getElementById('block_id');
    block.innerHTML = val.replace(/[\r\n]+/g, '<br>')
}
 </script>
</body>
</html>

sotik 12.03.2014 23:55

Спасибо большое.Наглядно и понятно.
Для себя я выявил нужный мне код:
creatElem('textarea', 'block_id');
result = xmlhttp.responseText.replace(/<[^>]+>/g,'');
		document.getElementById("block_id").value = result.replace(/[\r\n]+/g,'<br>');

Порадую своих гитаристов. :)

sotik 13.03.2014 12:05

Добавляю в свой текстариа информацию потом пытаюсь присвоить переменной, но почему-то не обновляется,а берется старое...
opt = document.getElementById("block_id").value.replace(/[\r\n]+/g,'<br>\r\n');

рони 13.03.2014 12:08

sotik,
по обрывкам кода можно только гадать.

sotik 13.03.2014 13:17

После клика по объекту мы через ajax, обращаясь к определенному файлу,выводим в контейнере информацию и переводим этот контейнер в textaria для редактирования, по-пути убираем теги для удобства:
creatElem('textarea', 'block_id');
result = xmlhttp.responseText.replace(/<[^>]+>/g,'');
document.getElementById("block_id").value = result;

далее жмем кнопку для записи в файл обновленной информации:
opt = document.getElementById("block_id").value.replace(/[\r\n]+/g,'<br>\r\n');
goText('wikli/zh/' + href,opt);

Вместо новой информации записывается старая.

sotik 13.03.2014 13:38

Все.Разобрался.
Все нормально записывается,дело оказалось в пути к файлу.
Конечный путь - Карина Подберезкина (текстовый документ).
php не записывает в этот же файл с русским имененм,а создает свой с абракадабровским именем. :)
Это можно как-то поправить или придется менять названия файлов на англ. ?

sotik 13.03.2014 13:50

Так.С этим понятно.
Дабы не загромождать код,подскажите как выявить порядковый номер элемента, по кторому был клик?
<ul id="raspis">
<li>Рита Ковалева</li>
<li>Степан Орлов</li>
<li>Карина Подберезкина</li>
</ul>

рони 13.03.2014 13:54

Цитата:

Сообщение от sotik
подскажите как выявить порядковый номер элемента

на форуме 100500 тем про номера.

рони 13.03.2014 14:02

sotik,
<!DOCTYPE HTML>
<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
</head>

<body>
<ul id="raspis">
<li>Рита Ковалева</li>
<li>Степан Орлов</li>
<li>Карина Подберезкина</li>
</ul>

<script>
   document.getElementById('raspis').onclick = function(e){
     var el = e.target;
     if(el.tagName == 'LI'){
        alert(getNum(el));
    }
}

   function getNum(el) {
    var i = 0;
    while (el = el.previousSibling) {
        el.nodeType == 1 && i++;
    }
    return i;
}
</script>
</body>

</html>

sotik 13.03.2014 14:36

Спасибо.Все теперь работает отлично :)

sotik 18.03.2014 01:17

Как каждую строку текста обрамить тегами <li.</li>,получилось только закрывающим.. :)
var block = document.getElementById("block_id").value;
result = block.replace(/[\r\n]+/g,'</li>\r\n');

рони 18.03.2014 01:34

sotik,
result = block.replace(/[\r\n]+/g,'</li>\r\n<li>');
result = '<li>' + result+ </li>

sotik 18.03.2014 13:38

Первую строчку я тоже так прописывал.В итоге получается что первая строка в файле без открывающего тега <li>,а в конце лишний открывающий.
Рита Ковалева (2 класс)</li>
<li>Фургуцатель Ахмитуян (1 класс)</li>
<li>

А если дописываю вторую строчку из вашего кода,то он вообще не работает.

sotik 18.03.2014 13:50

Нашел ошибку.Не хватало экранирования ''


Часовой пояс GMT +3, время: 21:37.