Даже если это старая ветка, я думаю, что она может быть полезна для тех, кто все еще ищет ответ.
Функция 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'