38 votes

DOM HTML simple : Comment supprimer des éléments ?

J'aimerais utiliser Simple HTML DOM pour supprimer toutes les images dans un article afin que je puisse facilement créer un petit extrait de texte pour un cocheur de nouvelles, mais je n'ai pas trouvé comment supprimer des éléments avec elle.

Fondamentalement, je ferais

  1. Obtenir le contenu sous forme de chaîne HTML
  2. Supprimer toutes les balises d'image du contenu
  3. Limiter le contenu à x mots
  4. Sortie.

De l'aide ?

55voto

Gordon Points 156415

Il n'existe pas de méthodes dédiées pour supprimer les éléments. Il vous suffit de trouver tous les éléments img, puis de faire

$e->outertext = '';

14voto

Sid Points 42

Je pense que vous avez quelques difficultés parce que vous avez oublié de sauvegarder(jetez l'arbre DOM interne dans la chaîne).

Essayez ceci :

$html = file_get_html("http://example.com");

foreach($html ->find('img') as $item) {
    $item->outertext = '';
    }

$html->save();

echo $html;

5voto

JaseC Points 398

Je n'arrivais pas à trouver où mettre la fonction, donc j'ai juste mis les éléments suivants directement dans mon code :

$html->load($html->save());

Il verrouille essentiellement les modifications apportées dans la boucle for dans le html comme indiqué ci-dessus.

2voto

marcelde Points 251

Les solutions supposées sont assez coûteuses et pratiquement inutilisables dans une grande boucle ou autre type de répétition.

Je préfère utiliser "soft deletes" :

foreach($html->find('somecondition'),$item){
    if (somecheck) $item->setAttribute('softDelete', true); //<= set marker to check in further code
    $item->outertext='';


   foreach($foo as $bar){
       if(!baz->getAttribute('softDelete'){
           //do something 
        }
    }

}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X