voku / simple_html_dom
Simple HTML DOM package.
5.0.0
2026-04-21 08:58 UTC
Requires
- php: >=7.1.0
- ext-dom: *
- ext-libxml: *
- ext-simplexml: *
- symfony/css-selector: ~3.0 || ~4.0 || ~5.0 || ~6.0 || ~7.0 || ~8.0
Requires (Dev)
- phpunit/phpunit: ~6.0 || ~7.0 || ~8.0 || ~9.0
Suggests
- voku/portable-utf8: If you need e.g. UTF-8 fixed output.
This package is auto-updated.
Last update: 2026-06-15 10:55:46 UTC
README
📜 Simple Html Dom Parser for PHP
A HTML DOM parser written in PHP - let you manipulate HTML in a very easy way! This is a fork of PHP Simple HTML DOM Parser project but instead of string manipulation we use DOMDocument and modern php classes like "Symfony CssSelector".
- PHP 7.1+ runtime support, tested on PHP 7.1 - 8.4
- PHP-FIG Standard
- Composer & PSR-4 support
- PHPUnit testing via GitHub Actions
- PHPStan-clean source tree on the current release branch
- PHP-Quality testing via SensioLabsInsight
- UTF-8 Support (more support via "voku/portable-utf8")
- Invalid HTML Support (partly ...)
- Find tags on an HTML page with selectors just like jQuery
- Extract contents from HTML in a single line
Install via "composer require"
composer require voku/simple_html_dom
composer require voku/portable-utf8 # if you need e.g. UTF-8 fixed output
Upgrade notes for v5.0.0
- PHP 7.0 is no longer supported; the package now requires PHP 7.1 or newer.
- Nested
find*()calls now return live nodes scoped to the original DOM, so mutating nested results updates the source document. - See the CHANGELOG for the full release notes.
Quick Start
use voku\helper\HtmlDomParser; require_once 'composer/autoload.php'; ... $dom = HtmlDomParser::str_get_html($str); // or $dom = HtmlDomParser::file_get_html($file); $element = $dom->findOne('#css-selector'); // "$element" === instance of "SimpleHtmlDomInterface" $elements = $dom->findMulti('.css-selector'); // "$elements" === instance of SimpleHtmlDomNodeInterface<int, SimpleHtmlDomInterface> $elementOrFalse = $dom->findOneOrFalse('#css-selector'); // "$elementOrFalse" === instance of "SimpleHtmlDomInterface" or false $elementsOrFalse = $dom->findMultiOrFalse('.css-selector'); // "$elementsOrFalse" === instance of SimpleHtmlDomNodeInterface<int, SimpleHtmlDomInterface> or false ...
Examples
github.com/voku/simple_html_dom/tree/master/example
API
github.com/voku/simple_html_dom/tree/master/README_API.md
Support
For support and donations please visit Github | Issues | PayPal | Patreon.
For status updates and release announcements please visit Releases | Twitter | Patreon.
For professional support please contact me.
Thanks
- Thanks to GitHub (Microsoft) for hosting the code and a good infrastructure including Issues-Managment, etc.
- Thanks to IntelliJ as they make the best IDEs for PHP and they gave me an open source license for PhpStorm!
- Thanks to Travis CI for being the most awesome, easiest continous integration tool out there!
- Thanks to StyleCI for the simple but powerfull code style check.
- Thanks to PHPStan && Psalm for relly great Static analysis tools and for discover bugs in the code!