2010-08-10 3 views
0

Quel est le code pour stocker dans une chaîne le contenu entier de la page Web entre <body></body> étiquettes?DOMDocument pour extraire une partie d'une page Web (n'importe quel encodage)?

  • peut être une page HTML/XHTML
  • peut être tout codage (ISOX, UTF-8, asiatique quelque chose)
  • peut avoir des attributs dans le <body> (peut tromper l'analyseur)

J'ai entendu parler de DOMDocument mais je suis une grande recrue, un peu d'exemple de code aiderait!

Répondre

1
$d = new DOMDOcument(); 
libxml_use_internal_errors(true); 
$d->loadHTMLFile("http://stackoverflow.com"); 
$b = $d->getElementsByTagName("body")->item(0); 
if ($b !== null) { 
    echo simplexml_import_dom($b)->asXML(); 
} 

Cela comprendra également l'étiquette <body>, et le contenu ont été modifiés pour être XML bien formé.

Ne pas avoir des balises corps (bien que maintenant nous n'avons pas une racine unique, donc pas bien formé XML):

$d = new DOMDOcument(); 
libxml_use_internal_errors(true); 
$d->loadHTMLFile("http://stackoverflow.com"); 
$b = $d->getElementsByTagName("body")->item(0); 
if ($b !== null) { 
    for ($n = $b->firstChild; $n !== null; $n = $n->nextSibling) { 
     echo simplexml_import_dom($n)->asXML(); 
    } 
} 
+0

Pourquoi ne pas enlever les étiquettes de corps? – Riccardo

+0

@Ric J'ai modifié. – Artefacto

+0

GRAND! Maintenant test! Merci – Riccardo

Questions connexes