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

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Fatal error: Uncaught Error - Impossible de supprimer dans mon code PHP la toute première table avec DomDocument

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

par chegmarco » 09 juin 2022, 12:51

Merci pour la réponse.

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

par @rthur » 09 juin 2022, 08:51

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.

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

par chegmarco » 09 juin 2022, 04:58

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.