scarletsfiction/scarletsquery

ScarletsQuery 是一个高性能的 HTML 或 XML 查询选择器/解析器,类似于 jQuery。

1.0.3 2019-04-07 02:52 UTC

This package is auto-updated.

Last update: 2024-09-07 15:23:11 UTC


README

Written by Software License Build Status Tweet

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 许可证。

通过支持作者来帮助改进此框架 \(≧▽≦)/