PHPackages                             nerd4ever/url-query - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [HTTP &amp; Networking](/categories/http)
4. /
5. nerd4ever/url-query

ActiveLibrary[HTTP &amp; Networking](/categories/http)

nerd4ever/url-query
===================

A library to extract parameters to filter and sort

1.0.8(5y ago)04521GPL-3.0-or-laterPHPPHP ^7.1.3CI failing

Since Jun 12Pushed 5y ago1 watchersCompare

[ Source](https://github.com/nerd4ever/url-query)[ Packagist](https://packagist.org/packages/nerd4ever/url-query)[ RSS](/packages/nerd4ever-url-query/feed)WikiDiscussions master Synced 1w ago

READMEChangelog (6)Dependencies (1)Versions (6)Used By (1)

nerd4ever/url-query
===================

[](#nerd4everurl-query)

A library to extract parameters to filter and sort.

[![codecov](https://camo.githubusercontent.com/f4f0f7968f641cdb587442c336abaafedc597da49ee80fa59abf23f8f75dedd7/68747470733a2f2f636f6465636f762e696f2f67682f6e65726434657665722f75726c2d71756572792f6272616e63682f6d61737465722f67726170682f62616467652e737667)](https://codecov.io/gh/nerd4ever/url-query)[![GitHub license](https://camo.githubusercontent.com/47a91c3d8d12312222e6cccc6a02b677b0206f652892cabec5f578ad5c91585b/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f6e65726434657665722f75726c2d7175657279)](https://github.com/nerd4ever/url-query/blob/master/LICENSE)[![GitHub issues](https://camo.githubusercontent.com/8d6448227bff5cbc2ca2b99a8f78f0801f6c48d4deb11510b4878d2884fd7083/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6973737565732f6e65726434657665722f75726c2d7175657279)](https://github.com/nerd4ever/url-query/issues)[![Minimum PHP Version](https://camo.githubusercontent.com/ee51a27c8e69a4033fab7243a53d51550fae4da4bb35e2023b81130eba6a1a7b/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f7068702d2533452533445f372e312e332d3838393242462e737667)](https://github.com/symfony/symfony)

Installation
------------

[](#installation)

```
composer require nerd4ever/url-query
```

Supported operators
-------------------

[](#supported-operators)

Operators used in filters and your syntax

- **ge** value greater than or equals

> ge.: *test=between:3,5* (**field** =&gt; test, **operator** =&gt; between, start =&gt; 3, end =&gt; 5 )

- **le** value less than or equals

> eg.: *test=le:3* (**field** =&gt; test, **operator** =&gt; le, value =&gt; 3)

- **ne** value not equals

> eg.: *test=ne:3* (**field** =&gt; test, **operator** =&gt; ne, value =&gt; 3)

- **eq** value equals

> eg.: *test=eq:3* (**field** =&gt; test, **operator** =&gt; eq, value =&gt; 3)

- **gt** value greater than

> eg.: *test=gt:3* (**field** =&gt; test, **operator** =&gt; gt, value =&gt; 3)

- **lt** value less than

> eg.: *test=lt:5* (**field** =&gt; test, **operator** =&gt; lt, value =&gt; 5)

- **regex** value validate by regular expression

> eg.: *test=regex:\[0-9\]* (field =&gt; test, operator =&gt; regex, values =&gt; \[0-9\])

- **in** one or more possible values (separated by commas)

> eg.: *test=in:3,4,5* (**field** =&gt; test, **operator** =&gt; in, values =&gt; \[3,4,5\])

- **between** values between start and end range (separated by commas).

> eg.: *test=between:3,5* (**field** =&gt; test, **operator** =&gt; between, start =&gt; 3, end =&gt; 5 )

- **contains** value anywhere

> eg.: *test=contains:3* (**field** =&gt; test, **operator** =&gt; contains, value =&gt; 3)

- **start** value at the beginning

> eg.: *test=start:3* (**field** =&gt; test, **operator** =&gt; start, value =&gt; 3)

- **finish** value at the end

> eg.: *test=finish:3* (**field** =&gt; test, **operator** =&gt; finish, value =&gt; 3)

- **nil** value null

> eg.: *test=nil:* (**field** =&gt; test, **operator** =&gt; nil)

Sorter syntax
-------------

[](#sorter-syntax)

```
http://sandbox.nerd4ever.com.br/url-query?_orders=data1:asc&data2:desc&data3

```

- *test:asc* (**field** =&gt; test, **type**=&gt; asc)
- *test:desc* (**field** =&gt; test, **type**=&gt; desc)
- *test* (**field** =&gt; test, **type**=&gt; asc)

Limit syntax
------------

[](#limit-syntax)

```
http://sandbox.nerd4ever.com.br/url-query?_limit=10

```

- *\_limit=10* (**property** =&gt; \_limit, **value**=&gt; 10)

Offset syntax
-------------

[](#offset-syntax)

```
http://sandbox.nerd4ever.com.br/url-query?_limt=10&_offset=1

```

- *\_limit=10* (**property** =&gt; \_limit, **value**=&gt; 10)
- *\_offset=1* (**property** =&gt; \_\_offset, **value**=&gt; 1)

QueryString example
-------------------

[](#querystring-example)

```
http://sandbox.nerd4ever.com.br/url-query?data0=3&data1=ge:3&data2=le:3&data3=ne:3&data4=eq:3&data5=gt:3&data6=lt:3&data7=regex:[0-9]&data8=in:3,4,5&data9=between:3,5&data10=contains:3&data11=start:3&data12=finish:5&data13=nil:&_orders=data1:asc,data2:desc,data3

```

Usage
-----

[](#usage)

```
use Nerd4ever\UrlQuery\Model\UrlQuery;

$urlQuery = new UrlQuery();
$urlQuery->parser($_SERVER['QUERY_STRING']);
```

> Output example For var\_export($urlQuery, true) from code above, using the QUERY\_STRING ?data0=3&amp;data1=ge:3&amp;data2=le:3&amp;data3=ne:3&amp;data4=eq:3&amp;data5=gt:3&amp;data6=lt:3&amp;data7=regex:\[0-9\]&amp;data8=in:3,4,5&amp;data9=between:3,5&amp;data10=contains:3&amp;data11=start:3&amp;data12=finish:5&amp;data13=nil:&amp;\_orders=data1:asc,data2:desc,data3

```
Nerd4ever\UrlQuery\Model\UrlQuery::__set_state(array(
   'reservedSortField' => '_orders',
   'filters' =>
  array (
    0 =>
    Nerd4ever\UrlQuery\Model\CriteriaEquals::__set_state(array(
       'value' => '3',
       'field' => 'data0',
    )),
    1 =>
    Nerd4ever\UrlQuery\Model\CriteriaGreaterThanOrEquals::__set_state(array(
       'value' => '3',
       'field' => 'data1',
    )),
    2 =>
    Nerd4ever\UrlQuery\Model\CriteriaLessThanOrEquals::__set_state(array(
       'value' => '3',
       'field' => 'data2',
    )),
    3 =>
    Nerd4ever\UrlQuery\Model\CriteriaNotEquals::__set_state(array(
       'field' => 'data3',
       'value' => '3',
    )),
    4 =>
    Nerd4ever\UrlQuery\Model\CriteriaEquals::__set_state(array(
       'value' => '3',
       'field' => 'data4',
    )),
    5 =>
    Nerd4ever\UrlQuery\Model\CriteriaGreaterThan::__set_state(array(
       'value' => '3',
       'field' => 'data5',
    )),
    6 =>
    Nerd4ever\UrlQuery\Model\CriteriaLessThan::__set_state(array(
       'value' => '3',
       'field' => 'data6',
    )),
    7 =>
    Nerd4ever\UrlQuery\Model\CriteriaRegex::__set_state(array(
       'value' => '[0-9]',
       'field' => 'data7',
    )),
    8 =>
    Nerd4ever\UrlQuery\Model\CriteriaIn::__set_state(array(
       'values' =>
      array (
        0 => '3',
        1 => '4',
        2 => '5',
      ),
       'field' => 'data8',
    )),
    9 =>
    Nerd4ever\UrlQuery\Model\CriteriaBetween::__set_state(array(
       'start' => '3',
       'end' => '5',
       'field' => 'data9',
    )),
    10 =>
    Nerd4ever\UrlQuery\Model\CriteriaContains::__set_state(array(
       'value' => '3',
       'field' => 'data10',
    )),
    11 =>
    Nerd4ever\UrlQuery\Model\CriteriaStart::__set_state(array(
       'value' => '3',
       'field' => 'data11',
    )),
    12 =>
    Nerd4ever\UrlQuery\Model\CriteriaFinish::__set_state(array(
       'value' => '5',
       'field' => 'data12',
    )),
    13 =>
    Nerd4ever\UrlQuery\Model\CriteriaNil::__set_state(array(
       'field' => 'data13',
    )),
  ),
   'sorters' =>
  array (
    0 =>
    Nerd4ever\UrlQuery\Model\Sorter::__set_state(array(
       'type' => 'asc',
       'field' => 'data1',
    )),
    1 =>
    Nerd4ever\UrlQuery\Model\Sorter::__set_state(array(
       'type' => 'desc',
       'field' => 'data2',
    )),
    2 =>
    Nerd4ever\UrlQuery\Model\Sorter::__set_state(array(
       'type' => 'asc',
       'field' => 'data3',
    )),
  ),
));
```

[Nerd4ever Official Home](http://www.nerd4ever.com.br)

###  Health Score

26

—

LowBetter than 43% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity12

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity54

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~1 days

Total

6

Last Release

2161d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/2d205c8624c0f8e9a358d99d746d654030cc2ede6248b15d4afef16b5faf4545?d=identicon)[nerd4ever](/maintainers/nerd4ever)

---

Top Contributors

[![sobrito](https://avatars.githubusercontent.com/u/4378335?v=4)](https://github.com/sobrito "sobrito (12 commits)")

---

Tags

phprestfiltersort

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/nerd4ever-url-query/health.svg)

```
[![Health](https://phpackages.com/badges/nerd4ever-url-query/health.svg)](https://phpackages.com/packages/nerd4ever-url-query)
```

###  Alternatives

[abantecart/ups-php

UPS PHP SDK based on OAuth

1815.3k](/packages/abantecart-ups-php)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
