erivello/simple-html-dom-bundle
Symfony2 bundle that integrates the Simple HTML DOM Parser, letting you load HTML and find tags with jQuery-like selectors via the simple_html_dom service. Extract links, content, and attributes easily.
dev-master only, one maintainer, 8 stars, zero dependents. A PM decision here should frame it as "borrow a prototype, buy a maintained parser, or build an ingestion path" — not "free feature."symfony/dom-crawler + masterminds/html5, symfony/http-client, headless rendering, or a managed scraping vendor). This package is a good marker of where that line sits.app/AppKernel.php, $this->container->get(...)). On Laravel there is no bundle concept at all — the wrapper delivers nothing, and only the underlying simple_html_dom API is even applicable. Choosing this package is an implicit decision to keep a legacy app on a legacy framework; make that an explicit, dated decision rather than an accidental one.load('http://...') fetches arbitrary URLs. Whether scraping targets are ours, partners', or user-supplied determines SSRF exposure, allow-listing, rate limiting, robots/ToS posture, and PII handling — product and legal scope, not just code review.Consider it when:
AppKernel.php, and the work is a short-lived internal utility.find('a'), $element->href), with low traffic and no external commitment.dev-master in isolation behind an interface you own.Look elsewhere when:
symfony/dom-crawler + masterminds/html5, or voku/simple_html_dom if the API must be preserved.symfony/http-client or Guzzle with DomCrawler.For executives: This is a zero-license-cost adapter that lets an existing Symfony2 app extract data from HTML pages in days, not sprints. Treat it as a tactical accelerator, not a platform bet: it can unblock an internal initiative quickly, but it is unmaintained, has effectively no user base, and ships no versioned releases — so every deployment carries uncontrolled change. Fund it as a spike with an expiry date and a named migration line item; do not let it sit under anything customer-facing or contractually binding.
For engineering: It is a thin container wrapper around simple_html_dom — one Composer require and one bundle registration — so the integration cost is dominated by the abandoned upstream parser, not this package. Recommended posture: (1) define an application-owned HtmlExtractor interface so the parser is a swappable detail, (2) build the first implementation on symfony/dom-crawler + CssSelector (already framework-maintained, maps cleanly to jQuery-style selectors), (3) pin any legacy usage by commit hash and vendor-fork if the bundle is genuinely required, (4) enforce an outbound URL allow-list, timeouts, size caps, and explicit memory cleanup in workers, and (5) add fixture tests that capture attribute/text normalization differences before migration. Net: low learning cost, high hidden operating cost.
For security and risk: Flag two accepted risks with a named owner and review date — remote fetching from arbitrary URLs (SSRF, DNS/timeout hangs) and no upstream patching. If the target set includes untrusted URLs, or the capability is customer-visible, the recommendation is to skip the package and budget the DomCrawler equivalent instead.
How can I help you explore Laravel packages today?