ivopetkov/html5-dom-document-php

HTML5 DOMDocument PHP 库(扩展 DOMDocument)

v2.7.0 2023-11-24 17:25 UTC

README

HTML5DOMDocument 扩展了原生 DOMDocument 库。它修复了一些错误并添加了一些新功能。

Latest Stable Version License

为什么使用?

  • 保留 HTML 实体(DOMDocument 不保留)
  • 保留空元素标签(DOMDocument 不保留)
  • 允许插入 HTML 代码,将正确的部分移动到它们正确的位置(头元素插入到 head 中,body 元素插入到 body 中)
  • 允许使用 CSS 选择器查询 DOM(目前可用:*, tagname, tagname#id, #id, tagname.classname, .classname, tagname.classname.classname2, .classname.classname2, tagname[attribute-selector], [attribute-selector], "div, p", div p, div > p, div + p 和 p ~ ul。)
  • 添加对 element->classList 的支持。
  • 添加对 element->innerHTML 的支持。
  • 添加对 element->outerHTML 的支持。

通过 Composer 安装

composer require "ivopetkov/html5-dom-document-php:2.*"

文档

完整的 文档 作为此存储库的一部分提供。

示例

像使用 DOMDocument 一样使用它

<?php
require 'vendor/autoload.php';

$dom = new IvoPetkov\HTML5DOMDocument();
$dom->loadHTML('<!DOCTYPE html><html><body>Hello</body></html>');
echo $dom->saveHTML();

使用 CSS 选择器查询文档,并获取元素的 innerHTML 和 outerHTML

$dom = new IvoPetkov\HTML5DOMDocument();
$dom->loadHTML('<!DOCTYPE html><html><body><h1>Hello</h1><div class="content">This is some text</div></body></html>');

echo $dom->querySelector('h1')->innerHTML;
// Hello

echo $dom->querySelector('.content')->outerHTML;
// <div class="content">This is some text</div>

将 HTML 代码插入到 HTML 文档中(其他 HTML 代码)

$dom = new IvoPetkov\HTML5DOMDocument();
$dom->loadHTML('
    <!DOCTYPE html>
    <html>
        <head>
            <style>...</style>
        </head>
        <body>
            <h1>Hello</h1>
        </body>
    </html>
');

$dom->insertHTML('
    <html>
        <head>
            <script>...</script>
        </head>
        <body>
            <div>This is some text</div>
        </body>
    </html>
');

echo $dom->saveHTML();
// <!DOCTYPE html>
//     <html>
//         <head>
//             <style>...</style>
//             <script>...</script>
//         </head>
//         <body>
//             <h1>Hello</h1>
//             <div>This is some text</div>
//         </body>
//     </html>

操作元素类属性的值

$dom = new IvoPetkov\HTML5DOMDocument();
$dom->loadHTML('<div class="class1"></div>');

echo $dom->querySelector('div')->classList->add('class2');

许可证

此项目采用 MIT 许可证。有关更多信息,请参阅 许可证文件

贡献

请随意打开新问题并为项目做出贡献。让我们使其变得出色,并以积极的方式去做。

作者

此库由 Ivo Petkov (ivopetkov.com) 和一些 出色的人 创建和维护。