Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

489
Views
¿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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!