Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

491
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda