Pele todas las tags HTML, excepto las permitidas

He visto muchas expresiones para eliminar una etiqueta específica (o muchas tags específicas), y una para eliminar todas las tags , excepto una, pero no he encontrado una forma de eliminar todas, excepto muchas excluidas (es decir, todas excepto p, b, i, u, a, ul, ol, li ) en PHP. Estoy lejos de ser bueno con expresiones regulares, así que necesitaría una mano. 🙂 ¡Gracias!

strip_tags() hace exactamente esto.

puedes hacer esto usando la función strip_tags

¶ strip_tags : elimina las tags HTML y PHP de una cadena

  strip_tags($contant,'tag you want to allow'); 

me gusta

  strip_tags($contant,'

');

Si necesita cierta flexibilidad, puede usar una solución basada en expresiones regulares y basarse en ella. strip_tags como se describe anteriormente aún debe ser el enfoque preferido.

Lo siguiente eliminará solo las tags que especifique (lista negra):

 // tags separated by vertical bar $strip_tags = "a|strong|em"; // target html $html = 'hadf'; // 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 "hadf"; echo $clean_html;