olamedia / nokogiri
HTML 解析器
2.0.2
2020-09-15 00:12 UTC
Requires
- php: >=5.0.0
- ext-dom: *
- ext-libxml: >=2.9.0
Requires (Dev)
- phpspec/prophecy: ~1.0
- phpspec/prophecy-phpunit: ^2.0
- phpunit/phpunit: ^9.3
This package is auto-updated.
Last update: 2024-09-15 12:12:35 UTC
README
注意:新版本可能破坏兼容性,在这种情况下,请使用v1.0分支或标签下的上一个版本,它支持php 5.4及以上。
\nokogiri 类保留用于兼容性
HTML 解析器
这个库是一个快速的HTML解析器,可以处理无效代码(错误将被忽略)。
底层使用LibXML。
输入可以是UTF-8编码的HTML字符串或DOMDocument。
查询元素时使用CSS选择器,这些选择器在内部转换为XPath表达式。
用法
加载HTML
HTML错误将被忽略
- 从HTML字符串
$saw = new \nokogiri($html);
$saw = \nokogiri::fromHtml($html);
- 从DOM元素
$saw = new \nokogiri($dom);
$saw = \nokogiri::fromDom($dom);
get($cssSelector)
$cssSelector 元素的格式如下: tagName[attribute=value]#elementId.className:pseudoSelector(expression)
$saw->get('div > a[rel=bookmark]')->toArray();
toArray()
将底层DOM结构作为数组返回。
值是属性,文本内容在 #text
键下,子元素在数字键下
toXml()
返回HTML字符串
getDom() toDom()
返回DOMDocument。如果第一个参数为true,还可以返回DOMNodeList或DOMElement
遍历找到的元素
foreach ($saw->get('#sidebar a.topic') as $link){ var_dump($link['#text']); }
实现的选择器
- tag
- .class
- #id
- [attr]
- [attr=value]
- :root
- :empty
- :first-child
- :last-child
- :first-of-type
- :last-of-type
- :only-of-type
- :nth-child(a)
- :nth-child(an+b)
- :nth-child(even/odd)
要求
- DOM
- libxml >=2.9.0
- PHP >= 7.3
许可证
MIT
新功能
2.0.0
- 最小PHP版本 7.3
- 最小LibXML版本 2.9.0
- 完全重构
- 部分行为改变,可能破坏兼容性
- HTML加载行为已改变
- 测试覆盖率
- 修复了nth-child和其他选择器的功能
- 不正确的选择器现在抛出异常
- 添加了新的选择器
1.0.0
- 第一个版本,2011
- 最小PHP版本 5.4