weew/url-matcher

简单的URL匹配和解析器。

v1.1.0 2016-07-25 15:17 UTC

This package is not auto-updated.

Last update: 2024-09-12 03:08:13 UTC


README

Build Status Code Quality Test Coverage Version Licence

目录

安装

composer require weew/url-matcher

简介

这个简单的匹配器允许您将URL路径与具有占位符的模板进行匹配,甚至可以提取它们。

使用

创建一个新的匹配器非常简单。

$matcher = new UrlMatcher();

匹配

以下是一个非常基本的匹配示例。

// true
$matcher->match('users/{id}', 'users/1');

// false
$matcher->match('users/{id}', 'users');

占位符可以是可选的,通过在末尾添加 ? 来实现。

// true
$matcher->match('users/{id?}', 'users/1');

// true
$matcher->match('users/{id?}', 'users');

占位符可以具有自定义模式。

$matcher->addPattern('id', '[0-9]+');

// true
$matcher->match('users/{id}', 'users/1');

// false
$matcher->match('users/{id}', 'users/abc');

您可以直接提供模式。

// true
$matcher->match('users/{id}', 'users/1', [
    'id' => '[0-9]+',
]);

占位符也可以是可选的。

// true
$matcher->match('users/{id?}', 'users/1', [
    'id' => '[0-9]+',
]);

// true
$matcher->match('users/{id?}', 'users', [
    'id' => '[0-9]+',
]);

解析

提取占位符非常简单。 parse 方法始终返回一个 IDictionary 实例。

$dictionary = $matcher->parse('users/{id}', 'users/123');
// 123
$dictionary->get('id');

$dictionary = $matcher->parse('users/{id}', 'users');
// null
$dictionary->get('id');

当然,占位符也可以有自定义模式。

$matcher->addPattern('id', '[0-9]+');
$dictionary = $matcher->parse('users/{id}', 'users/123');
// 123
$dictionary->get('id');

$dictionary = $matcher->parse('users/{id}', 'users/abc');
// null
$dictionary->get('id');

替换

通过将特定值替换占位符,您可以执行与解析相反的操作。

// api.service.com
$matcher->replace('{subdomain}.service.com', 'subdomain', 'api');

// api.service.com/v1
$matcher->replaceAll('{subdomain}.service.com/{version}', ['subdomain' => 'api', 'version' => 'v1']);