Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

495
Vistas
¿Cómo eliminar etiquetas HTML y contenido HTML dentro de una cadena en PHP?

Tengo un archivo .txt. Usando el siguiente código lo leí:

 while (!feof($handle)) { yield trim(utf8_encode(fgets($handle))); }

Ahora, de la cadena recuperada, quiero eliminar no solo las etiquetas HTML, sino también el contenido HTML del interior. Encontré muchas soluciones para eliminar las etiquetas, pero no ambas: etiquetas + contenido.

Cadena de muestra - Hey my name is <b>John</b>. I am a <i>coder</i>!

Cadena de salida requerida: Hey my name is . I am a !

¿Cómo puedo conseguir esto?

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Una forma de lograr esto es usando DOMDocument y DOMXPath . Mi solución asume que la cadena HTML proporcionada no tiene un nodo contenedor o que el contenido del nodo contenedor no debe eliminarse (ya que esto daría como resultado una cadena completamente vacía).

 $string = 'Hey my name is <b>John</b>. I am a <i>coder</i>!'; // create a DOMDocument (an XML/HTML parser) $dom = new DOMDocument('1.0', 'UTF-8'); // load the HTML string without adding a <!DOCTYPE ...> and <html><body> tags // and with error/warning reports turned off // if loading fails, there's something seriously wrong with the HTML if($dom->loadHTML($string, LIBXML_HTML_NODEFDTD | LIBXML_HTML_NOIMPLIED | LIBXML_NOERROR | LIBXML_NOWARNING)) { // create an DOMXPath instance for the loaded document $xpath = new DOMXPath($dom); // remember the root node; DOMDocument automatically adds a <p> container if one is not present $rootNode = $dom->documentElement; // fetch all descendant nodes (children and grandchildren, etc.) of the root node $childNodes = $xpath->query('//*', $rootNode); // with each of these decendants... foreach($childNodes as $childNode) { // ...remove them from their parent node $childNode->parentNode->removeChild($childNode); } // echo the sanitized HTML echo $rootNode->nodeValue . "\n"; }

Si desea eliminar un código de contenedor potencial, será un poco más difícil, porque es difícil diferenciar entre un nodo de contenedor original y un nodo de contenedor que DOMDocument agrega automáticamente.


Además, si se encuentra una etiqueta de no cierre involuntaria, puede generar resultados inesperados, ya que eliminará todo hasta la siguiente etiqueta de cierre, porque DOMDocument agregará automáticamente una etiqueta de cierre para las etiquetas de no cierre no válidas.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda