Я видел много выражений, чтобы удалить определенный тег (или многие указанные теги), и один, чтобы удалить все, кроме одного определенного тега , но я не нашел способ удалить все, кроме многих исключенных (т.е. все, кроме p, b, i, u, a, ul, ol, li
) в PHP. Я слишком далек от регулярного выражения, поэтому мне нужна рука. 🙂 Благодаря!
strip_tags()
делает именно это.
вы можете сделать это, используя функцию strip_tags
¶ strip_tags – Стриптиз HTML и PHP-тегов из строки
strip_tags($contant,'tag you want to allow');
как
strip_tags($contant,'<code><p>');
Если вам нужна гибкость, вы можете использовать решение на основе регулярных выражений и основываться на нем. strip_tags
как указано выше, все равно должен быть предпочтительным.
Ниже перечислены только теги, которые вы указали (черный список):
// tags separated by vertical bar $strip_tags = "a|strong|em"; // target html $html = '<em><b>ha<a href="" title="">d</a>f</em></b>'; // Regex is loose and works for closing/opening tags across multiple lines and // is case-insensitive $clean_html = preg_replace("#<\s*\/?(".$strip_tags.")\s*[^>]*?>#im", '', $html); // prints "<b>hadf</b>"; echo $clean_html;