Page 1 sur 1

Fatal error: Uncaught Error - Impossible de supprimer dans mon code PHP la toute première table avec DomDocument

Posté : 09 juin 2022, 04:58
par chegmarco
Bonjour.

Je cherche à supprimer le bloc sur l'image suivante: https://i.stack.imgur.com/ldp85.png.

Et pour ça, j'ai décidé de procéder avec DomDocument comme suit en cherchant à supprimer grâce à str_ireplace, la table ayant la classe CSS contenant box-Advert dans le document $parser:

Code : Tout sélectionner

libxml_use_internal_errors(true); $parser = new DOMDocument(); // $parser->loadHTMLFile($url); $parser->loadHTMLFile("https://en.wikipedia.org/wiki/Sogou"); $getTableTags = $parser->getElementsByTagName("table"); foreach ($getTableTags as $getTableTag) { if (stripos($getTableTag->getAttribute('class'), "box-Advert") !== false) { $parser = str_ireplace($getTableTag, "", $parser); } }
Mais, mon code ci-dessus me retourne l'erreur suivante:
Fatal error: Uncaught Error: Object of class DOMElement could not be converted to string in C:\laragon\www\test.php:200 Stack trace: #0 C:\laragon\www\test.php(200): str_ireplace(Object(DOMElement), '', Object(DOMDocument)) #1 {main} thrown in C:\laragon\www\test.php on line 200
Comment donc réussir à supprimer grâce à DomDocument la toute première table ayant la classe CSS box-Advert plainlinks metadata ambox ambox-content ambox-Advert sur l'URL: https://en.wikipedia.org/wiki/Sogou ???

Merci de m'aider.

Re: Fatal error: Uncaught Error - Impossible de supprimer dans mon code PHP la toute première table avec DomDocument

Posté : 09 juin 2022, 08:51
par @rthur
Tu ne peux pas utiliser str_ireplace() sur un objet.

Pour supprimer un noeud d'un objet DOMdocument, tu peux utiliser removechild() :
https://www.php.net/manual/fr/domnode.removechild.php

A noter aussi que Wikipedia a une API pour faciliter la récupération de contenu
Exemple pour récupérer un extrait :
https://fr.wikipedia.org/w/api.php?form ... tles=Sogou
Ou le contenu HTML :
https://fr.wikipedia.org/w/api.php?acti ... page=Sogou

Je ne connais pas l'API par coeur mais tu peux faire des recherches pour voir ce qui serait le + approprié, nottament car le HTML de Wikipedia peut évoluer à tout moment, alors que le point d'API est un mode d'accès plus pérenne.

Re: Fatal error: Uncaught Error - Impossible de supprimer dans mon code PHP la toute première table avec DomDocument

Posté : 09 juin 2022, 12:51
par chegmarco
Merci pour la réponse.