eliminar tags html

Actualmente, utilizo strip_tags para eliminar todas las tags html de las cadenas que proceso. Sin embargo, noté últimamente, que se une a las palabras, que figuran en las tags eliminadas, es decir,

$str = "
  • Hello
  • world
  • "; $result = strip_tags($str); echo $result; (prints HelloWorld)

    ¿Cómo puedes evitar esto?

    Encontré la pregunta a continuación, que básicamente resuelve mi problema. Problema al usar strip_tags en php.

    Gracias por la ayuda de todos modos

    Todo depende de qué salida desee después de eliminar las tags HTML. Por ejemplo:

    Si desea que las tags

  • se conviertan en una lista simple de elementos, le sugiero que use str_replace para reemplazar

  • con * y con \n .

    La propuesta de strip_tags es deshacerse de las tags HTML sin ninguna otra conversión.

    Esto reemplazaría todas las tags html (cualquier cosa en forma de , de hecho, sin verificar si realmente es html) con un espacio en blanco, luego reemplazará espacios dobles en blanco a espacios en blanco y eliminará espacios en blanco iniciales o finales.

     $str = preg_replace("/<.*?>/", " ", $str); $str = trim(str_replace(" ", " ", $str)); 

    puedes jugar en qué Patrón Regex es mejor y qué reemplazar 🙂

     // ------------------------------------ function strip_html_tags($string) { $string = str_replace("\r", ' ', $string); $string = str_replace("\n", ' ', $string); $string = str_replace("\t", ' ', $string); ## $string = str_replace("
  • ', "\n* ", $string); ## $pattern = "/<.*?>/"; $pattern = '/<[^>]*>/'; $string= preg_replace ($pattern, ' ', $string); $string= trim(preg_replace('/ {2,}/', ' ', $string)); return $string; } // ------------------------------------
  • también puede agregar reemplazos especiales como: '

  • '
  • a "\n* " … o lo que sea 🙂

    Estarías mejor con htmlentities ()

    No eliminará el <>, pero los escapará.

     echo strip_tags( str_replace( '>', '> ', $string )); 

    eso debería hacer exactamente lo que estás buscando en todos los casos.

    De su código descubrí que no había espacio inicial entre las palabras Hello Word y no espera que la función strip_tags se lo agregue, así que para que la función strip_tags produzca exactamente lo que desea, agregué un espacio después de la primera etiqueta de lista y el resultado fue Hola mundo.

    Puede copiar y pegar este código y ejecutar para ver la diferencia.

      $str = "
  • Hello
  • world
  • "; $result = strip_tags($str); echo $result; //Expected result after Execution is Hello world