duncan3dc/domparser

为标准DOMDocument类提供额外功能,以支持html/xml解析

2.1.0 2021-08-15 13:59 UTC

This package is auto-updated.

Last update: 2024-09-15 21:04:15 UTC


README

为PHP DOMDocument类提供额外功能,以支持html/xml解析的包装器

release build coverage

构造函数参数

有2个构造函数可用,一个用于HtmlParser类,一个用于XmlParser类,它们的工作方式相同。

  • 只有一个参数可用,它应该作为一个字符串传递,并包含要解析的内容(xml/html)
  • 在加载内容时,使用libxml_use_internal_errors()和libxml_get_errors()捕获警告,这些警告在类初始化后可以从errors属性中获取

公共属性

  • html/xml(字符串)- 根据使用的类,以下属性之一将存在,并包含用于解析的内容
  • errors(数组)- 如果在解析过程中遇到任何错误,它们将在这个数组中(参见[构造函数参数])
  • dom(DOMDocument)- 这是使用的DOMDocument类的内部实例
  • mode(字符串)- 指示解析器是在html模式还是xml模式下运行

公共方法

  • getTags(string $tagName): array - 与DOMDocument::getElementsByTagName()类似,但返回一个标准数组。
    别名:getElementsByTagName()
  • getTag(string $tagName): Element - 与getTags()类似,但将返回第一个匹配的元素,而不是元素数组。
    别名:getElementByTagName()
  • getElementsByClassName(mixed $className): array - 匹配具有与字符串参数匹配的类属性的元素。
    如果您想找到具有多个类的元素,请将$className传递为一个类数组,并且只有具有所有类的元素才会返回
  • getElementByClassName(mixed $className): Element - 与getElementsByClassName()类似,但此方法将返回第一个匹配的元素
  • output(): string - 返回由接收器表示的xml/html,使用DOMDocument::formatOutput格式化
  • xpath(string $path): array - 返回匹配路径的元素数组

DOM元素

所有返回元素的函数都返回Element类的实例,这类似于标准DOMElement类,除了它具有上述所有方法,并且nodeValue属性使用trim()删除了前导和尾随空白

示例

解析器类使用命名空间duncan3dc\Dom

use duncan3dc\Dom\Html\Parser;
use duncan3dc\Dom\Xml\Parser;
$parser = new Parser(file_get_contents("http://example.com"));

echo "Page Title: " . $parser->getTag("title")->nodeValue . "\n";

$contentType = false;
$meta = $parser->getTags("meta");
foreach($meta as $element) {
	if($element->getAttribute("http-equiv") == "Content-type") {
		$contentType = $element->getAttribute("content");
	}
}
echo "Content Type: " . (($contentType) ?: "NOT FOUND") . "\n";

duncan3dc/domparser for enterprise

作为Tidelift订阅的一部分提供

duncan3dc/domparser的维护者以及成千上万的包维护者正在与Tidelift合作,为构建应用程序时使用的开源依赖项提供商业支持和维护。节省时间,降低风险,并提高代码健康性,同时支付您使用的确切依赖项的维护者。 了解更多。