olamedia/nokogiri

HTML 解析器

2.0.2 2020-09-15 00:12 UTC

This package is auto-updated.

Last update: 2024-09-15 12:12:35 UTC


README

PHP Composer

注意:新版本可能破坏兼容性,在这种情况下,请使用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