I can not run this script, I have every time two error messages can you help me
(!) Warning: DOMDocument :: loadHTML (): Empty string Supplied as input in C: wamp www form formulaire.php on line 23 0.1442 2 142344 loadHTML () .. formulaire.php: 23 Notice (!): Undefined variable: description in C: wamp www form formulaire.php on line 57
<?php //La page qu'on veut utiliser $wikipediaURL = 'http://fr.wikipedia.org/wiki/Megadeth'; //On initialise cURL $ch = curl_init(); //On lui transmet la variable qui contient l'URL curl_setopt($ch, CURLOPT_URL, $wikipediaURL); //On lui demdande de nous retourner la page curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //On envoie un user-agent pour ne pas être considéré comme un bot malicieux curl_setopt($ch, CURLOPT_USERAGENT, 'Le blog de Samy Dindane (www.dinduks.com'); //On exécute notre requête et met le résultat dans une variable $resultat = curl_exec($ch); //On ferme la connexion cURL curl_close($ch); //On crée un nouveau document DOMDocument $wikipediaPage = new DOMDocument(); //On y charge le contenu qu'on a récupéré avec cURL $wikipediaPage->loadHTML($resultat); //On parcourt les balises <div> foreach($wikipediaPage->getElementsByTagName('div') as $div){ //Si l'id de la page est bodyContent if($div->getAttribute('id') == "bodyContent"){ //On met le contenu du premier <p> dans une variable $premierP = trim($div->getElementsByTagName('p')->item(0)->nodeValue); //Si le premier <p> est vide ou ne contient pas du texte while($premierP == '<br>' || $premierP == '<br />' || $premierP == ''){ //On le supprime $div->removeChild($div->getElementsByTagName('p')->item(0)); //Et on passe au <p> suivant $premierP = trim($div->getElementsByTagName('p')->item(0)->nodeValue); }; //Un joli try pour éviter les messages d'erreur try{ //On parcourt toutes les tables foreach( $div->getElementsByTagName('table') as $table ){ //Et on les supprime $div->removeChild($table); } } catch(Exception $e){ //On censure :P } //On récupère le contenu de la fameuse balise <p> dans une variable $description = '<p>' . $div->getElementsByTagName('p')->item(0)->nodeValue. '</p>'; } } //On enlève la syntaxe propre à Wikipedia $description = preg_replace('/[[0-9]*][,]|[[0-9]*]/', '', $description); //On affiche de résultat echo $description; ?> Hello I tackled too big so I gave up Thanks for your help
Advertisement
Answer
Check out Simple Html Dom. It really simplifies finding stuff in html files. Here is an example with your code.
<?php include("simple_html_dom.php"); $wikipediaURL = 'http://fr.wikipedia.org/wiki/Megadeth'; $html = file_get_html($wikipediaURL); $description = '<p>' .$html->find('p', 0). '</p>'; $description = preg_replace('/[[0-9]*][,]|[[0-9]*]/', '', $description); echo $description;