Как удалить HTML-теги из строки в JavaScript? [дубликат]

Возможные Дубликаты:
Strip HTML из текста JavaScript

Как я могу удалить HTML из строки в JavaScript?

4 ответов


использование парсера браузера является, вероятно, лучшим выбором в текущих браузерах. Следующее будет работать, со следующими оговорками:

  • ваш HTML действителен в пределах <div> элемент. HTML, содержащийся в <body> или <html> или <head> теги недопустимы в пределах <div> и поэтому может быть неправильно проанализирован.
  • textContent (стандартное свойство DOM) и innerText (нестандартные) свойства не идентичны. Например, textContent будет включать текст в <script> элемент а innerText не будет (в большинстве браузеров). Это влияет только на IE textContent.
  • HTML не содержит <script> элементы.
  • HTML не null
  • HTML поступает из надежного источника. Использование этого с произвольным HTML позволяет выполнять произвольный ненадежный JavaScript. Этот пример из комментария Майка Сэмюэля о дубликате вопрос: <img onerror='alert(\"could run arbitrary JS here\")' src=bogus>

код:

var html = "<p>Some HTML</p>";
var div = document.createElement("div");
div.innerHTML = html;
var text = div.textContent || div.innerText || "";

cleanText = strInputCode.replace(/<\/?[^>]+(>|$)/g, "");

перегнали из этот веб-сайт (web.achive).


var html = "<p>Hello, <b>World</b>";
var div = document.createElement("div");
div.innerHTML = html;
alert(div.innerText); // Hello, World

это в значительной степени лучший способ сделать это, вы позволяете браузеру делать то, что он делает лучше всего-разбирать HTML.


Edit: как отмечено в комментариях ниже, это не самое кросс-браузерное решение. Самым кросс-браузерным решением было бы рекурсивно пройти через все дочерние элементы элемента и объединить все текстовые узлы, которые вы найдете. Однако, если вы используете jQuery, он уже делает это за вас:

alert($("<p>Hello, <b>World</b></p>").text());

проверить текст метод.


Я знаю, что этот вопрос имеет принятый ответ, но я чувствую, что он не работает во всех случаях.

для полноты и так как я потратил слишком много времени на это, вот что мы сделали: мы в конечном итоге использовали функцию из php.js (это довольно хорошая библиотека для тех, кто больше знаком с PHP, но также делает немного JavaScript время от времени):

http://phpjs.org/functions/strip_tags:535

казалось, это только кусок кода JavaScript, который успешно справлялся со всеми различными видами ввода, я запихнул в свое приложение. То есть, не нарушая его-см. мои комментарии о <script /> тег выше.