Image

PHP Funciones Útiles - Convertir HTML en Texto Plano

Desarrollo

Hola ABC-eLearners, a modo de ayuda para todos los lectores con ganas de aprender a programar, voy a compartirles mis experiencias, esta vez en PHP, las que considere más útiles para todos. Esta vez les comparto una función que devuelve una cadena de texto plano a partir de un texto HTML, esta función surgió del problema siguiente:.

<?php
function StripTag($string, $allowed = "")
{
  return strip_tags($string, $allowed);
}
echo StripTag('<style style="display:none;" type="text/css">p {margin-top:0;margin-bottom:0;}</style></span></p><p>Este es un texto de prueba dentro de una etiqueta </p><ul><li>opcion 1</li><li>opcion 2</li></ul><script>var test = 1;</script>');
# Resultado: p {margin-top:0;margin-bottom:0;}Este es un texto de prueba dentro de una etiqueta opcion 1opcion 2var test = 1;
?>


Si se dan cuenta, el texto dentro de las etiquetas <style> y <script>, se consideran texto plano, para solucionarlo, hice lo siguiente antes de utilizar la función nativa strip_tags.

<?php
function StripTagPowered($string, $allowed = "")
{
  $string = preg_replace("/(\n\r|\r\n|\n|\r|\t)/i", "", $string);
  $string = preg_replace("/<(style)\s*.*>\s*.*<\/(style)>/i", "", $string);
  $string = preg_replace("/<(script)\s*.*>\s*.*<\/(script)>/i", "", $string);
  return strip_tags($string, $allowed);
}
echo StripTagPowered('<style style="display:none;" type="text/css">p {margin-top:0;margin-bottom:0;}</style></span></p><p>Este es un texto de prueba dentro de una etiqueta </p><ul><li>opcion 1</li><li>opcion 2</li></ul><script>var test = 1;</script>');
# Resultado 2: Este es un texto de prueba dentro de una etiqueta opcion 1opcion 2
?>


Si desean excluir otras etiquetas además de <style> y <script>, pueden agregar una línea para esa etiqueta.

Comenta qué otras funciones más necesitarías para reusar y optimizar tu tiempo mientras programas en PHP.

1 Commentario(s)

  • Image placeholder

    Anónimo

    24/09/2021 10:43

    Post muy completo

    <a href="https://www.digitalnomadstenerife.io/">https://www.digitalnomadstenerife.io/</a>


    Responder

    • Image placeholder

      Carlos Eduardo Salazar Mori

      04/07/2020 04:42

      Gracias!

Deja un comentario