Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to remove elements by css selector ( tags, classes and ids ) with Domcrawler?

How could I implement this solution here with Domcrawler?

<?php
use Symfony\Component\DomCrawler\Crawler;

$crawler = new Crawler();
$content = file_get_contents('http://example.com/somepage.html');
$crawler->addHtmlContent($content, 'UTF-8');
$content = $crawler->filter('#main-content');

// Remove content by tag and by css selector.

?>
like image 601
Francisco Luz Avatar asked Dec 05 '25 07:12

Francisco Luz


1 Answers

    $crawler = new Crawler($html,$url);

    $document = new \DOMDocument('1.0', 'UTF-8');
    $root = $document->appendChild($document->createElement('_root'));
    $crawler->rewind();
    $root->appendChild($document->importNode($crawler->current(), true));
    $domxpath = new \DOMXPath($document);

    foreach ($selectorsToRemove as $selector) {
        $crawlerInverse = $domxpath->query(CssSelector::toXPath($selector));
        foreach ($crawlerInverse as $elementToRemove) {
            $parent = $elementToRemove->parentNode;
            $parent->removeChild($elementToRemove);
        }
    }
    $crawler->clear();
    $crawler->add($document);
like image 82
bigmax Avatar answered Dec 06 '25 23:12

bigmax