scarletsfiction / scarletsquery
ScarletsQuery 是一个高性能的 HTML 或 XML 查询选择器/解析器,类似于 jQuery。
Requires
- php: >=5.6
This package is auto-updated.
Last update: 2024-09-07 15:23:11 UTC
README
ScarletsQuery
ScarletsQuery 是一个高性能的 HTML 或 XML 查询选择器/解析器,类似于 jQuery。
安装说明
克隆/下载此存储库,并包含 ScarletsQuery.php
使用 composer 安装
composer require scarletsfiction/scarletsquery
可用方法
这个库的查询选择器设计得类似于 jQuery 的 queryselector。
但有不同的方法来获取数据。
MarkupLanguage
这个类将处理每个选择器查询并解析标记语言。
MarkupLanguage::parseText($string);
将 HTML/XML 解析为结构化数组,作为 MarkupLanguageElementCollection
MarkupLanguageElementCollection
这个类包含一个元素树集合,您也可以像数组一样获取值 $collection[0]
,它将返回 MarkupLanguageElement
。
$dom->length;
返回元素集合的长度
$dom->view;
返回元素集合的原始数组
$dom->selector($query);
返回结果作为 MarkupLanguageElementCollection
$dom->parent();
返回所有结果的父级作为 MarkupLanguageElementCollection
$dom->content($index = false);
返回所有结果的内容作为 Array
。如果指定 $index
,则将内容作为 String
返回
MarkupLanguageElement
这个类包含一个元素树集合,您也可以像数组一样获取值 $collection[0]
,它将返回 MarkupLanguageElement
。
$dom->view;
返回元素的原始数组
$dom->selector($query);
返回结果作为 MarkupLanguageElement
$dom->parent();
返回元素的父级 MarkupLanguageElement
$dom->hasClass($class);
如果找到则返回 true
,否则返回相反值
$dom->next($jump = 1);
返回下一个兄弟元素作为 MarkupLanguageElement
$dom->content();
返回内容作为 String
$dom->attr($property);
返回元素属性作为 String
,如果未找到则返回 null
示例用法
<ul> <li class='account'> <span active id="name">Alex</span> <span active id="1">1a</span> </li> <li class="account"> <span active id='nickname'>Steven</span> <span active id="2">2b</span> </li> <li class="profile"> <span active id="name">Elisabeth</span> <span active id="3">3c</span> </li> <li class="account"> <span active id="name">Luffy</span> <span active id="4">4d</span> </li> </ul>
以下是 PHP 脚本
$html = file_get_contents('sample.html'); $dom = Scarlets\Library\MarkupLanguage::parseText($html); // Select element that have 'name' id and get these content $dom->selector('#name')->content(); /* Output Array ( [0] => Alex [1] => Elisabeth [2] => Luffy ) */ /* 1. Select element that have 'ul' tag 2. Select the child with '3' id 3. Select the element before it { next(-1) } 4. Get the content */ $dom->selector('ul #3')[0]->next(-1)->content(); /* Output Elisabeth */ // Select 'ul' tag and the child with 'li' tag $contents = $dom->selector('ul li'); // Iterate over the result for ($i=0; $i < $contents->length; $i++) { // Check if the element has 'profile' class if($contents[$i]->hasClass('profile')){ // Select the child with 'span' tag // And get the second content print_r($contents[$i]->selector('span')->content(1)); } } /* Output 3c */
贡献
如果您想帮助 ScarletsQuery,请分支此项目并在您的存储库中进行编辑,然后向此处提交拉取请求。
保持代码简洁明了。
许可证
ScarletsQuery 采用 MIT 许可证。
通过支持作者来帮助改进此框架 \(≧▽≦)/