shroophp / pattern
v1.0.4
2018-12-05 23:39 UTC
Requires
- php: >=5.4
- shroophp/core: ^3.0 || ^2.0
Requires (Dev)
- phpunit/phpunit: ^6.3 || ^5.7 || ^4.8
README
一个简单的模式匹配库。
安装
composer require 'shroophp/pattern ^1.0'
示例用法
默认情况下,模式将使用简单的花括号语法进行解释。花括号内指定的每个键都将等于一个惰性正则表达式分组(即 (.*?)
)。
<?php
use ShrooPHP\Pattern\Interpreter;
require 'vendor/autoload.php';
$interpreter = new Interpreter;
$pattern = $interpreter->interpret('Hello, {subject}!');
$world = $pattern->match('Hello, world!'); // array('subject' => 'world')
$mismatch = $pattern->match('Goodbye, galaxy!'); // null
除了花括号之外的其他标记可以通过传递给解释器的构造函数来使用。
<?php
use ShrooPHP\Pattern\Interpreter;
require 'vendor/autoload.php';
$interpreter = new Interpreter('(', ')');
$curly = $interpreter->interpret('{greeting}, {subject}!');
$mismatch = $curly->match('Hello, world!'); // null
$exact = $curly->match('{greeting}, {subject}!'); // array()
$round = $interpreter->interpret('(greeting), (subject)!');
$matched = $round->match('Hello, world!'); // array(
// 'greeting' => 'Hello',
// 'subject' => 'world'
// )
默认情况下,可以使用反斜杠(即 \
)来转义标记。
<?php
use ShrooPHP\Pattern\Interpreter;
require 'vendor/autoload.php';
$interpreter = new Interpreter;
$pattern = $interpreter->interpret('\{{key\}}');
$matched = $pattern->match('{value}'); // array('key}' => 'value}')