eyupcanakman / simple-html-dom
A modern HTML DOM parser for PHP using DOMDocument and Symfony CssSelector.
v5.1.1
2026-02-28 20:29 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 || ~9.0 || ~10.0 || ~11.0
- dev-master
- v5.1.1
- v5.1.0
- v5.0.0
- v4.9.0
- 4.8.10
- 4.8.9
- 4.8.8
- 4.8.7
- 4.8.6
- 4.8.5
- 4.8.4
- 4.8.3
- 4.8.2
- v4.8.1
- v4.8.0
- 4.7.31
- 4.7.30
- 4.7.29
- 4.7.28
- 4.7.27
- 4.7.26
- 4.7.25
- 4.7.24
- 4.7.23
- 4.7.22
- 4.7.21
- 4.7.20
- 4.7.19
- 4.7.18
- 4.7.17
- 4.7.16
- 4.7.15
- 4.7.14
- 4.7.13
- 4.7.12
- 4.7.11
- 4.7.10
- 4.7.9
- 4.7.8
- 4.7.7
- 4.7.6
- 4.7.5
- 4.7.4
- 4.7.3
- 4.7.2
- 4.7.1
- 4.7.0
- 4.6.1
- 4.6.0
- 4.5.4
- 4.5.3
- 4.5.2
- 4.5.1
- 4.5.0
- 4.4.0
- 4.3.3
- 4.3.2
- 4.3.1
- 4.3.0
- 4.2.1
- 4.2.0
- 4.1.10
- 4.1.9
- 4.1.8
- 4.1.7
- 4.1.6
- 4.1.5
- 4.1.4
- 4.1.3
- 4.1.2
- 4.1.1
- 4.1.0
- 4.0.1
- 4.0.0
- 3.1.2
- 3.1.1
- 3.1.0
- 3.0.1
- 3.0.0
- 2.0.31
- 2.0.30
- 2.0.29
- 2.0.28
- 2.0.27
- 2.0.26
- 2.0.25
- 2.0.24
- 2.0.23
- 2.0.22
- 2.0.21
- 2.0.20
- 2.0.19
- 2.0.18
- 2.0.17
- 2.0.16
- 2.0.15
- 2.0.14
- 2.0.13
- 2.0.12
- 2.0.11
- 2.0.10
- 2.0.9
- 2.0.8
- 2.0.7
- 2.0.6
- 2.0.5
- 2.0.4
- 2.0.3
- 2.0.2-RC
- 2.0.1-RC
- 2.0.0-RC
- 1.7.2
- 1.7.1
- 1.7.0
- 1.6.8
- 1.6.7
- 1.6.6
- 1.6.5
- 1.6.4
- 1.6.3
- 1.6.2
- 1.6.1
- 1.6.0.2
- 1.6.0.1
- 1.6.0
- 1.5
- dev-release/v4.8.0
- dev-fix/php-version-requirement
- dev-fix/leading-combinator-selectors
- dev-analysis-g6g33E
- dev-analysis-LZ0egm
- dev-analysis-D2wpmJ
- dev-analysis-Yjn2bG
- dev-analysis-OMa5KW
- dev-dependabot/add-v2-config-file
- dev-use_ivopetkov_html5_dom
This package is auto-updated.
Last update: 2026-03-08 12:26:14 UTC
README
A HTML DOM parser written in PHP - let you manipulate HTML in a very easy way!
A modern fork of PHP Simple HTML DOM Parser. Instead of string manipulation, it uses DOMDocument and modern PHP classes like Symfony CssSelector.
What's different in this fork
- PHP 8.4 support (nullable parameter deprecations fixed)
- Symfony 8.0 support
- Leading combinator selectors (
> span,+ div,~ p) now work infind() @propertyannotations on abstract classes for better static analysis (Psalm, PHPStan)- Minimum PHP version corrected to 7.1.0 (matches actual nullable type usage)
findOneOrNull()for PHP 8.0+ nullsafe operator support (?->)remove()method (jQuery-style alias fordelete())text()no longer includes<style>and<script>content- Fixed crash when calling
delete()on detached/root nodes - HTML output no longer adds extra linebreaks not in the original
- Compound
text/commentselectors:find('div text'),find('p > text'),find('div comment') - SVG data URLs inside
<style>tags no longer break parsing (unquotedurl()fix)
Features
- PHP 7.1+ & 8.x support
- Composer & PSR-4
- UTF-8 support
- Invalid HTML support (partly)
- Find tags on an HTML page with selectors just like jQuery
- Extract contents from HTML in a single line
Install
composer require eyupcanakman/simple-html-dom
Quick Start
use eyupcanakman\SimpleHtmlDom\HtmlDomParser; $dom = HtmlDomParser::str_get_html($str); // or $dom = HtmlDomParser::file_get_html($file); $element = $dom->findOne('#css-selector'); $elements = $dom->findMulti('.css-selector'); $elementOrFalse = $dom->findOneOrFalse('#css-selector'); $elementOrNull = $dom->findOneOrNull('#css-selector'); $elementsOrFalse = $dom->findMultiOrFalse('.css-selector'); // PHP 8.0+ nullsafe operator $text = $dom->findOneOrNull('.maybe-missing')?->text(); // Find text nodes inside an element $textNodes = $dom->find('div text'); // all descendant text nodes $directText = $dom->find('p > text'); // direct child text nodes only $comments = $dom->find('div comment'); // comment nodes inside div
Examples
github.com/eyupcanakman/simple_html_dom/tree/master/example
API
github.com/eyupcanakman/simple_html_dom/tree/master/README_API.md
License
MIT - see LICENSE
Credits
Based on PHP Simple HTML DOM Parser.