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>
Ответы
Ответ 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.
Опять же, на самом деле не отвечающий на ваш вопрос, а слово предостережения, основанное на том, где вы могли бы возглавить, исходя из вашего вопроса:)
Ответ 6
Вы можете попробовать это, возможно, лучшее решение: http://phpjs.org/functions/strip_tags/
Ответ 7
UPDATE
Используйте следующее, чтобы разделить теги при сохранении содержимого
$('#text').find('p').contents().unwrap();
Это разделит тег p
, где p
является дочерним элементом из '#text'.
Ответ 8
Чтобы удалить все теги, можно использовать:
var StrippedString = OriginalString.replace(/(<([^>]+)>)/ig,"");
Код от: Разделить HTML-теги в JavaScript
Ответ 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'