weew / url-matcher
简单的URL匹配和解析器。
v1.1.0
2016-07-25 15:17 UTC
Requires
- weew/collections: ^1.0
- weew/helpers-array: ^1.0
- weew/helpers-string: ^1.2
Requires (Dev)
- phpunit/phpunit: ^4.7
- satooshi/php-coveralls: ^0.6.1
This package is not auto-updated.
Last update: 2024-09-12 03:08:13 UTC
README
目录
安装
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']);