{"id":18355519,"url":"https://github.com/yonis-savary/php-dom","last_synced_at":"2025-04-10T01:37:43.669Z","repository":{"id":170039377,"uuid":"645749493","full_name":"yonis-savary/PHP-Dom","owner":"yonis-savary","description":"HTML Parser for PHP, with support for simple CSS Selectors !","archived":false,"fork":false,"pushed_at":"2024-07-10T12:53:35.000Z","size":49,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-15T16:56:04.589Z","etag":null,"topics":["dom","parser","php","php-html"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/yonis-savary.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-05-26T10:53:43.000Z","updated_at":"2023-11-16T08:52:03.000Z","dependencies_parsed_at":null,"dependency_job_id":"eb309a4e-ca50-4a03-8d6b-0b24db98a35c","html_url":"https://github.com/yonis-savary/PHP-Dom","commit_stats":null,"previous_names":["yonissavary/php-dom","yonis-savary/php-dom"],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yonis-savary%2FPHP-Dom","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yonis-savary%2FPHP-Dom/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yonis-savary%2FPHP-Dom/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yonis-savary%2FPHP-Dom/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yonis-savary","download_url":"https://codeload.github.com/yonis-savary/PHP-Dom/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248141457,"owners_count":21054464,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dom","parser","php","php-html"],"created_at":"2024-11-05T22:07:10.407Z","updated_at":"2025-04-10T01:37:43.647Z","avatar_url":"https://github.com/yonis-savary.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 📜 PHP-Dom (WIP)\n\nHTML Parser for PHP, with support for simple CSS Selectors !\n\n## ✅ Supports\n\n\u003e [!WARNING]\n\u003e A lots of tests are to write yet, for this library is still in development\n\nHTML:\n- Document Parsing\n- \"to html\" method (from objects to HTML document)\n- DOM Manipulation\n\nCSS:\n- Type selector (+ universal)\n- Class selector\n- Id selector\n- Attribute selector (Minus column \u0026 namespaces ones)\n- Combinator selectors\n\n## How to install\n\n```bash\ncomposer config repositories.repo-name vcs https://github.com/YonisSavary/PHP-Dom\ncomposer require yonissavary/php-dom\n```\n\n## How to use\n\n```php\n$document = Node::makeDocument(file_get_contents($path));\n\necho $document-\u003einnerHTML();\n\nforeach ($document-\u003eiterate() as $child)\n    echo \"$child\\n\";\n\n$links = $document-\u003equerySelectorAll(\"a[href]\");\n```\n\n\n## Interfaces\n\n`HTMLElement`: nodes, texts, comments\n\n```php\ninterface HTMLElement\n{\n    public function nodeName(): string;\n\n    public function innerText(): string;\n    public function innerHTML(): string;\n\n    public function setParent(HTMLElement \u0026$parent);\n    public function parentNode(): ?NodeElement;\n}\n```\n\n\n`NodeElement`: html nodes with attributes (not necessarily containers, can be input for example)\n\n```php\ninterface NodeElement extends HTMLElement\n{\n    public function id(): ?string;\n    public function classlist(): array;\n\n    public function setAttribute(string $key, mixed $value);\n    public function getAttribute(string $key): mixed;\n    public function hasAttribute(string $key): bool;\n    public function attributes(): array;\n\n    public function matches(string|array $selector): bool;\n    public function querySelector(string $selector): ?NodeElement;\n    public function querySelectorAll(string $selector): array;\n\n    public function appendChild(HTMLElement $node);\n    public function childNodes(): array;\n\n    /** @return \\Generator|Node[] */\n    public function iterate();\n\n    public function previousSiblings(): array;\n    public function nextSiblings(): array;\n    public function previousSibling(): ?NodeElement;\n    public function nextSibling(): ?NodeElement;\n    public function getSiblings(bool $skipSelf=true): array;\n}\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyonis-savary%2Fphp-dom","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyonis-savary%2Fphp-dom","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyonis-savary%2Fphp-dom/lists"}