Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
工具/GitHubGitHub/pvharmo2/gha-lab-f1c8785cc8
漏洞分析漏洞利用学习与教育精选资源实验室与实践
GitHubpvharmo2/gha-lab-f1c8785cc8

gha-lab-f1c8785cc8

GitHub Actions 工作流沙箱,用于复现 CVE-2025-46820

查看仓库
13天前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
The modern DOM API for PHP 7 projects

现代 DOM API

该项目基于 PHP 原生的 DOMDocument 构建,提供对现代 DOM API 的访问,如同你在浏览器中处理客户端代码时所期望的那样。

在服务端代码中执行 DOM 操作,可以增强动态页面的构建方式。利用标准化的面向对象接口,页面可以预先处理,从而惠及浏览器、Web 服务器和内容分发网络。


Build status Code quality Code coverage Current version PHP.Gt/Dom documentation

使用示例:你好,你!

重要提示: 此处示例仅用于说明目的,但使用 DOM 直接将数据设置到元素的值中,会将逻辑与视图紧密耦合,这被视为不良实践。请参阅 DomTemplate 库,以获取将数据绑定到 DOM 的更稳健的解决方案。

考虑一个包含表单的页面,其中有一个输入元素用于输入你的名字。当表单提交时,页面应通过你的名字向你问好。

这是一个简单的示例,展示了如何将源 HTML 文件视为模板。这可以轻松应用于更高级的模板页面以提供动态内容,而无需使用非标准技术,例如用 {{花括号}} 作为占位符,或在 PHP 中通过 echo '<div class='easy-mistake'>' . $content['opa'] . '</div>' 这种容易出错的 HTML 拼接方式。

源 HTML(name.html)

root@kitploit:~
<!doctype html>
<h1>
	你好,<span class="name-output">你</span> !
</h1>

<form>
	<input name="name" placeholder="请输入你的名字" required />
	<button>提交</button>
</form>

用于注入你名字的 PHP(index.php)

root@kitploit:~
<?php
use Gt\Dom\HTMLDocument;
use Gt\Dom\HTMLElement\HTMLSpanElement;
require "vendor/autoload.php";

$html = file_get_contents("name.html");
$document = new HTMLDocument($html);

if(isset($_GET["name"])) {
	$span = $document->querySelector(".name-output");
	$span->innerText = $_GET["name"];
}

echo $document;

功能一览

  • 兼容 W3C 的 DOM 实时标准:
    • Element 类型代表所有 HTMLElement 规范,例如 HTMLAnchorElement(<a>)、HTMLButtonElement(<button>)、HTMLInputElement(<input>)、HTMLTableSectionElement(<thead>、<tbody>、<tfoot>)等。特定类型可通过 Element::getElementType() 检测,该方法返回 ElementType 枚举值之一。
    • DOMException 扩展,用于捕获不同类型的异常,例如 EnumeratedValueException、HierarchyRequestError、IndexSizeException 等。
    • 客户端功能已存根,包括 FileList、StyleSheet、VideoTrackList、WindowProxy 等类。
  • DOM 第 4 级及以上的功能:
    • 通过 Element::querySelector() 和 Element::querySelectorAll() 使用 CSS 选择器引用元素
    • 使用 ClassList 添加/移除/切换元素的类
    • 使用 Element::previousElementSibling、Element::nextElementSibling、Element::children、Element::lastElementChild 和 firstElementChild 等遍历仅包含 Element 的节点
    • 使用 ChildNode::remove()、、、 插入和移除子节点
  • HTMLDocument 上的标准属性:
    • anchors
    • forms
    • image
    • links
    • scripts
    • title

已知限制 / W3C 规范合规性

本仓库旨在尽可能准确地遵循 https://dom.spec.whatwg.org/ 上的 DOM 规范——自 v4.0.0 起,所有功能均已实现,但存在以下微小且不可避免的与标准的偏差:

  • 元素的 tagName 属性为大写。
  • 要检查 HTMLElement 类型,必须调用 Element::getElementType()——例如,没有可用的 Element 子类用于 instanceof 操作。
  • DOM 规范定义了只能在客户端实现的功能。例如,HTMLInputElement::files 返回一个 FileList,用于枚举用户通过浏览器界面选择的文件。此类功能无法在服务端实现,但为了与规范保持一致已进行了存根处理。在此库中尝试使用客户端功能会抛出 ClientSideOnlyFunctionalityException。

数据绑定和页面模板功能

本仓库旨在尽可能准确地遵循 DOM 规范。该仓库的扩展可在 https://php.gt/domtemplate 获取,它通过自定义元素和模板属性添加了页面模板和数据绑定功能,引入了类似 WebComponents 的服务端功能。

PHP 8.4 原生 HTMLDocument

自 PHP 8.4 发布以来,PHP 原生提供了一种新的原生 HTMLDocument 类。由于具有原生绑定,所有操作都更快。已经开始着手使 PHPGT 的 Dom 实现利用新的原生代码。幸运的是,DOM 是一个非常定义良好的标准,因此无论发生什么,你的代码都只需要最少或无需更改。

请自行查看 php84-benchmark 分支上的基准测试:大多数操作记录显示,切换到原生实现后速度提升了 90% 或更高!

当在原生类的实现方面取得更多进展时,将在 readme 中提供更多信息。

下载工具
ChildNode::before
ChildNode::after
ChildNode::replaceWith()