gaswelder / htmlparser
HTML 解析器和 DOM 实现
v2.1.0
2022-09-26 18:15 UTC
Requires (Dev)
- phpunit/phpunit: ^5.7
README
这是一个具有最小DOM实现的HTML解析器。它不依赖于PHP的内置libxml和DOM,并处理了一些在野外遇到的有缺陷的标记。
使用示例
<?php use \gaswelder\htmlparser\Parser; use \gaswelder\htmlparser\ParsingException; try { $doc = Parser::parse($html); } catch(ParsingException $e) { // ... return; } $images = $doc->querySelectorAll('#posts .post img'); foreach ($images as $img) { $src = $img->getAttribute('src'); echo $src, "\n"; }
特性
所有容器节点(DocumentNode和ElementNode)都有querySelector和querySelectorAll方法,支持CSS2的有限子集
- 类型选择器(如
div) - 一些属性选择器(如
[checked],[attr="val"],[attr$="val"],[attr^="val"]) - 类选择器(如
.active) - ID选择器(如
#main)
它们还支持以下组合器
- 后代(
ul li) - 子代(
ul > li) - 兄弟(
li + li)
节点可以打印到控制台,输出将与Firefox的控制台输出相似
<?php $list = $doc->getElementsByTagName('a'); echo $list, PHP_EOL;
可能产生以下输出
NodeList [ <a>, <a#top>, <a.first>, <a>, <a> ]
安装
Composer用户在控制台执行此操作
composer require gaswelder/htmlparser
老派用户(如果还活着)可以下载库到他们的$libdir,并执行此操作
require "$libdir/htmlparser/init.php";