gaswelder/htmlparser

HTML 解析器和 DOM 实现

v2.1.0 2022-09-26 18:15 UTC

This package is auto-updated.

Last update: 2024-09-28 19:42:11 UTC


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)都有querySelectorquerySelectorAll方法,支持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";