Подтвердить что ты не робот

JQuery (почти) эквивалент PHP strip_tags()

Существует ли версия jQuery этой функции?

string strip_tags (строка $str [, string $allowable_tags])

разделите все теги и содержимое внутри них из строки, кроме тех, которые определены в допустимой строке тегов.

как:

var stripped = strip_tags($('#text').html(), '<p><em><i><b><strong><code>');

от

<div id="text">
  <p> paragraph </p>
  <div> should be stripped </div>
</div>
4b9b3361

Ответ 1

Чтобы удалить только теги, а не содержимое, которое ведет себя как PHP strip_tags(), вы можете сделать:

var whitelist = "p"; // for more tags use the multiple selector, e.g. "p, img"
$("#text *").not(whitelist).each(function() {
    var content = $(this).contents();
    $(this).replaceWith(content);
});

Попробуйте здесь.

Ответ 2

Чтобы удалить все теги, вы можете использовать

$('<div>Content</div>').text()

Ответ 3

Просто используйте регулярное выражение:

html.replace( /<.*?>/g, '' );

Готово.:)

Для тега p:

html.replace( /<[^p].*?>/g, '' );

Для других тегов это усложняется.

Ответ 4

Это сработало для меня:

function strip_tags(str) {
    str = str.toString();
    return str.replace(/<\/?[^>]+>/gi, '');
}

Ответ 5

Не настоящий ответ, а слово предостережения (в зависимости от того, что вы пытаетесь сделать с этим):

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

Почему?

Просто потому, что вы создаете веб-сайт, это не значит, что:

  • У ваших пользователей включен JavaScript. Если вы не отправляете свою форму строго через script (используя кнопки отправки и т.д.), Она по-прежнему позволяет пользователям отправлять недопустимые данные (например, теги
  • Запросы могут фактически не инициироваться браузером вообще, обходя любую входную санитацию на основе JS.

Опять же, на самом деле не отвечающий на ваш вопрос, а слово предостережения, основанное на том, где вы могли бы возглавить, исходя из вашего вопроса:)

Ответ 7

UPDATE

Используйте следующее, чтобы разделить теги при сохранении содержимого

$('#text').find('p').contents().unwrap();

Это разделит тег p, где p является дочерним элементом из '#text'.

Проверьте рабочий пример http://jsfiddle.net/YWCsH/

Ответ 9

Даже если это старый поток, я думаю, что он может быть полезен тем, кто все еще ищет ответ.

Функция Locutus.io представляется лучшим решением:

function strip_tags (input, allowed) {
      allowed = (((allowed || '') + '').toLowerCase().match(/<[a-z][a-z0-9]*>/g) || []).join('')
      var tags = /<\/?([a-z][a-z0-9]*)\b[^>]*>/gi
      var commentsAndPhpTags = /<!--[\s\S]*?-->|<\?(?:php)?[\s\S]*?\?>/gi
      return input.replace(commentsAndPhpTags, '').replace(tags, function ($0, $1) {
        return allowed.indexOf('<' + $1.toLowerCase() + '>') > -1 ? $0 : ''
      })
}

Пример 1:

strip_tags('<p>Kevin</p> <br /><b>van</b> <i>Zonneveld</i>', '<i><b>')

возвращает 1: 'Kevin <b>van</b> <i>Zonneveld</i>'

Пример 2:

strip_tags('<p>Kevin <img src="someimage.png" onmouseover="someFunction()">van <i>Zonneveld</i></p>', '<p>')

возвращает 2: '<p>Kevin van Zonneveld</p>'

Пример 3:

strip_tags("<a href='http://kvz.io'>Kevin van Zonneveld</a>", "<a>")

возвращает 3: "<a href='http://kvz.io'>Kevin van Zonneveld</a>"

Пример 4:

strip_tags('1 < 5 5 > 1')

возвращает 4: '1 < 5 5 > 1'

Пример 5:

strip_tags('1 <br/> 1')

возвращает 5: '1 1'

Пример 6:

strip_tags('1 <br/> 1', '<br>')

возвращает 6: '1 <br/> 1'

Пример 7:

strip_tags('1 <br/> 1', '<br><br/>')

возвращает 7: '1 <br/> 1'