PHPackages                             slexx/pattern - 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. slexx/pattern

ActiveLibrary

slexx/pattern
=============

v1.2.1(8y ago)2612MITPHP

Since Jul 29Pushed 8y agoCompare

[ Source](https://github.com/slexx1234/pattern)[ Packagist](https://packagist.org/packages/slexx/pattern)[ RSS](/packages/slexx-pattern/feed)WikiDiscussions master Synced 2mo ago

READMEChangelogDependencies (1)Versions (4)Used By (2)

Pattern
=======

[](#pattern)

[![Latest Stable Version](https://camo.githubusercontent.com/0d46a079dcb36b91d4f3aa3460f4514a1523d4ace2c3f215819ab119f8fe3d3d/68747470733a2f2f706f7365722e707567782e6f72672f736c6578782f7061747465726e2f762f737461626c65)](https://packagist.org/packages/slexx/pattern) [![Total Downloads](https://camo.githubusercontent.com/5526509fc11740a60681d6fe10457731cd0c860870fbd8e68cea8636e5ce7477/68747470733a2f2f706f7365722e707567782e6f72672f736c6578782f7061747465726e2f646f776e6c6f616473)](https://packagist.org/packages/slexx/pattern) [![Latest Unstable Version](https://camo.githubusercontent.com/e1ead859185dd7c4601d9fdaa2957f653d528a09ff9de4cf0ef1a864dc4273a0/68747470733a2f2f706f7365722e707567782e6f72672f736c6578782f7061747465726e2f762f756e737461626c65)](https://packagist.org/packages/slexx/pattern) [![License](https://camo.githubusercontent.com/98886382acd3ff08a16f9fd9d9ac0c672bf7e247f75ff8fc47f7fab6bffe491a/68747470733a2f2f706f7365722e707567782e6f72672f736c6578782f7061747465726e2f6c6963656e7365)](https://packagist.org/packages/slexx/pattern)

Установка
---------

[](#установка)

```
$ composer require slexx/pattern

```

Базовое использование
---------------------

[](#базовое-использование)

Это новый язык шаблонов схожий с регулярными выражениями, но значительно проще. Основной класс имеет всего несколько методов, а сам язык прост как валенок. Компилируется в регулярное выражение.

Пример шаблона:

```
/users[/[/]]

```

Он компилируется в следующее регулярное выражение:

```
/^\/users(?:\/(?P[1-9][0-9]*|0)(?:\/(?Pedit|delete))?)?(?:\/)?$/

```

Первый вариант намного легче читается и сним проще работать.

Пример использования:

```
use Slexx\Pattern\Pattrn;

$pattern = new Pattern('/users/');
var_dump($pattern->match('/users/5')); // -> ['id' => 5]
```

Документация
------------

[](#документация)

### Текст

[](#текст)

В любом тексте который не является синтаксической единицой языка, будут экранированы все символы регулярных выражений.

ПравилоРегулярное выражение`users//``/^users\/(?P.+)\/$/`### Не обязательное

[](#не-обязательное)

Всё не обязательное, то чо может осуцтвовать в тексте по тем или иным присинам можно просто обнести квадратными скобками.

   Правило Регулярное выражение     `foo[|bar]` `/^foo(?:\|bar)?$/`  ### Параметры

[](#параметры)

Параметры обносятся знаком меньше слева и знаком больше справа, их можно использовать для того что бы найти какуюто часть текста.

ПравилоРегулярное выражение`users//``/^users\/(?P.+)\/(?P.+)(?:\/)?$/`#### Правила

[](#правила)

В параметре через двоеточие можно указать имя правила для валидации параметра или регулярное выражение.

   Правило Регулярное выражение     `/users//` `/^\/users\/(?P[1-9][0-9]*|0)\/$/`   `-` `/^(?P\d{4})-(?P\d{2})$/`  ##### Установка правил

[](#установка-правил)

Для установки правила можно воспользоватся методом `rule` в котором первый аргумент имя параметра, а второй регулярное выражение.

```
$pattern = new Pattern('users show ');
$pattern->rule('slug', '[\w\d\-]+');

$pattern->match('users show alex1234');
// -> ['slug' => 'alex1234'];

$pattern->match('users show {}+');
// -> null
```

##### Стандартные правила

[](#стандартные-правила)

Для удобства уже реализовано несколько правил, вот их список:

   Правило Псевдоним Регулярное выражение      integer int `[1-9][0-9]*|0`   float double `(?:[1-9][0-9]*|0)\.[0-9]*`   number  `(?:[1-9][0-9]*|0)(?:\.[0-9]*)?`   string  `(?:.|[^.])+`   boolean bool `true|false|0|1|on|off`   word  `\w+`   slug  `[\w\d_\-]+`  ##### Правило по умолчанию

[](#правило-по-умолчанию)

Если не указывать правило то будет использовано следующее регулярное выражение: `.+`.

#### Приведение типов

[](#приведение-типов)

Для некоторых стандартных правил работает приведение типов:

- int, integer
- float, double
- bool, boolean

Для все остальных случаев возвращается строка.

```
$pattern = new Pattern('users list[ --verbose[ ]][ --offset ][ --limit ]');

$pattern->match('users list --verbose on --offset 5');
// -> ['verbose' => true, 'offset' => 5, 'limit' => null];
```

#### Значения по умолчанию

[](#значения-по-умолчанию)

Для типа `boolean` по умолчанию возвращается `false`, для всех остальных `null`. Значение по умолчанию можно указать с помощью метода `default` где первым аргументом следует имя параметра, а вторым значение по умолчанию.

```
$pattern = new Pattern('users list[ --verbose[ ]][ --offset ][ --limit ]');

$pattern->default('limit', 50);
$pattern->default('verbose', true);

$pattern->match('users list --offset 5');
// -> ['verbose' => true, 'offset' => 5, 'limit' => 50];
```

### Проверка

[](#проверка)

Для проверки текста на соотвецтвие шаблону есть иетод `is`, он принимает строку первым параметром и возвращает `boolean`.

```
$pattern = new Pattern('users/[/]');
$pattern->is('users'); // -> false
$pattern->is('users/5'); // -> true
$pattern->is('/users/5/'); // -> true
```

###  Health Score

29

—

LowBetter than 59% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity11

Limited adoption so far

Community10

Small or concentrated contributor base

Maturity65

Established project with proven stability

 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

3

Last Release

3209d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/d76b1d60ad85fc4479c1a04bf6816cbc12ff9a1c9748ff56f5771c0dac46d042?d=identicon)[slexx](/maintainers/slexx)

---

Top Contributors

[![slexx1234](https://avatars.githubusercontent.com/u/23412450?v=4)](https://github.com/slexx1234 "slexx1234 (20 commits)")

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/slexx-pattern/health.svg)

```
[![Health](https://phpackages.com/badges/slexx-pattern/health.svg)](https://phpackages.com/packages/slexx-pattern)
```

PHPackages © 2026

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