rudestan / domquery
一个简单易用的库,用于选择DOM元素,类似于jQuery的Sizzle。
Requires
- php: >=5.3.0
Requires (Dev)
- phpunit/phpunit: 3.7.*
This package is not auto-updated.
Last update: 2024-09-24 02:32:02 UTC
README
domQuery是一个简单小巧的库,用于以jQuery的方式选择DOM元素。它并不是jQuery库的完整替代品,甚至并非所有选择器都已实现,但它已经允许你使用主要的选择器和属性修饰符(例如 name|=, name~= 等)。
使用domQuery编写网站抓取器既简单又快速,因为你不需要使用正则表达式——只需使用domQuery的常规jQuery选择器,并且只需编写几行代码。
实际上,domQuery将jQuery的选择器转换为DOMXPath查询并执行它。库将更新一些新功能、错误修复等。
有一些PHPUnit测试(在test目录中),使用jQuery API文档中的html和选择器。
使用方法
你可以以常规方式创建一个domQuery的新实例,然后执行查询
$dQ = new domQuery\Selector($doc); $dQ->q('.myClass');
或者直接使用静态包装器
$dQ = domQuery\Selector::i($document)->q('.myClass');
返回的结果是一个对象数组(domQuery\Element的数组),因此你可以像处理常规数组一样处理它们。此外,如果结果数组中只有一个元素,你可以直接访问其方法而不需要索引,例如。
$dQ = domQuery\Selector::i($document)->q('.myClass')->q('.mySubClass');
domQuery\Element是DOMElement的包装器,但它还包含一些有用的方法,如text()、innerHTML()和outerHTML()。你还可以从domQuery\Element元素运行q()方法,并选择其子元素。
示例
$doc = ' <!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>class demo</title> </head> <body> <div class="notMe">div class="notMe"</div> <div class="myClass">div class="myClass"</div> <span class="myClass">span class="myClass"</span> <div> <div class="parentClass"> Here goes parent text of the class! <p id="idSubElement"> here is sub element! </p> </div> </div> </body> </html> '; // 1. Length and text() // get the length $els = domQuery\Selector::i($doc)->q('.myClass'); echo "count is: ".$els->length(); // 2 , there are two elements (DIV and SPAN) with class 'myClass' echo "\n"; if($els->length()) { foreach($els as $el) { echo $el->text()."\n"; // echo the text of each element: 1 - div class="myClass", 2 - span class="myClass" } echo "\n"; } // 2. Nested selectors // let's select P element with the id = idSubElement // there are two ways to do it: $els = domQuery\Selector::i($doc)->q('.parentClass #idSubElement'); // or $els = domQuery\Selector::i($doc)->q('.parentClass')->q('#idSubElement'); echo trim($els[0]->text()); // echo trimmed text "here is sub element!"
此外
jQuery选择器的列表:https://api.jqueryjs.cn/category/selectors/
强大的jQuery功能实现:https://github.com/TobiaszCudnik/phpquery
... 以及许多其他不同的jQuery选择器在PHP中的实现 :)