Как удалить 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 />
тег выше.