Удалите все теги HTML, кроме разрешенных

Я видел много выражений, чтобы удалить определенный тег (или многие указанные теги), и один, чтобы удалить все, кроме одного определенного тега , но я не нашел способ удалить все, кроме многих исключенных (т.е. все, кроме p, b, i, u, a, ul, ol, li ) в PHP. Я слишком далек от регулярного выражения, поэтому мне нужна рука. 🙂 Благодаря!

Solutions Collecting From Web of "Удалите все теги HTML, кроме разрешенных"

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;