Как удалить HTML-теги с помощью jQuery?


Я хочу удалить HTML-теги из строки. Например, предположим, что у нас есть строка:

 <p> example ive got a string</P>

Как я могу написать функцию, которая удаляет <p><p> и возвращает только "пример ive получил строку"?

4 59

4 ответа:

The безопасный способ должен полагаться на TextNode браузера, чтобы правильно экранировать контент. Вот пример:

function stripHTML(dirtyString) {
  var container = document.createElement('div');
  var text = document.createTextNode(dirtyString);
  container.appendChild(text);
  return container.innerHTML; // innerHTML will be a xss safe string
}

document.write( stripHTML('<p>some <span>content</span></p>') );
document.write( stripHTML('<script><p>some <span>content</span></p>') );

здесь нужно помнить, что браузер избегает специальных символов TextNodes, когда мы обращаемся к строкам html (innerHTML,outerHTML). Для сравнения, доступ к текстовым значениям (innerText,textContent) даст необработанные строки, Что означает, что они небезопасны и могут содержать XSS.

если вы используете jQuery, затем через .text() безопасен и обратно совместим. Увидеть другие ответы на этот вопрос.

The самый простой способ в чистом JavaScript при работе с браузерами

string.replace(/(<([^>]+)>)/ig,"");

но есть некоторые проблемы с разбором HTML с регулярным выражением, так что это не обеспечит очень хорошую безопасность. Кроме того, это касается только HTML-символов, поэтому он не полностью безопасен для xss.

использовать .text() функция:

var text = $("<p> example ive got a string</P>").text();

обновление: как указывает Brilliand ниже, если входная строка не содержит тегов, и вам не повезло, ее можно рассматривать как селектор CSS. Так что эта версия является более надежной:

var text = $("<div/>").html("<p> example ive got a string</P>").text();

Это пример для получения изображения url, экранирования тега p из некоторого элемента.

попробуйте это:

$('#img').attr('src').split('<p>')[1].split('</p>')[0]

вы можете использовать существующую функцию разделения

один простой и порывистый пример:

var str = '<p> example ive got a string</P>';
var substr = str.split('<p> ');
// substr[0] contains ""
// substr[1] contains "example ive got a string</P>"
var substr2 = substr [1].split('</p>');
// substr2[0] contains "example ive got a string"
// substr2[1] contains ""

пример - это просто показать вам, как работает разделение.