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.
Anónimo
Post muy completo
<a href="https://www.digitalnomadstenerife.io/">https://www.digitalnomadstenerife.io/</a>
Responder
Carlos Eduardo Salazar Mori
Gracias!