duncan3dc / domparser
为标准DOMDocument类提供额外功能,以支持html/xml解析
2.1.0
2021-08-15 13:59 UTC
Requires
- php: ^7.3 || ^8.0
- ext-dom: *
- ext-libxml: *
Requires (Dev)
- maglnet/composer-require-checker: ^2.0 || ^3.0
- mockery/mockery: ^1.4
- phpstan/phpstan: ^0.12.94
- phpstan/phpstan-mockery: ^0.12.14
- phpstan/phpstan-phpunit: ^0.12.22
- phpunit/phpunit: ^8.5
- squizlabs/php_codesniffer: ^3.6
README
为PHP DOMDocument类提供额外功能,以支持html/xml解析的包装器
构造函数参数
有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合作,为构建应用程序时使用的开源依赖项提供商业支持和维护。节省时间,降低风险,并提高代码健康性,同时支付您使用的确切依赖项的维护者。 了解更多。