rkr / wildcards
简单的通配符匹配器
1.0.3
2014-09-19 19:13 UTC
Requires
- php: >= 5.3.0
Requires (Dev)
- phpunit/phpunit: 3.7.*
README
本项目旨在为PHP提供一个非常简单的组件,以支持通配符。通配符是 *(零个或多个字符)和 ?(正好一个字符)。该组件与文件名无关。您还可以将其用于命名空间、URL和其他字符串。
为什么不能仅仅提供一个简单的函数呢?
因为效率。当您创建 Pattern
类的实例时,您也在“编译”模式。这意味着我会为您的后续输入尝试找到最优的测试方法。所以,如果您在同一个运行中多次运行相同的模式,您可能会从这种优化中受益。如果不这样做,该接口应该足够简单,足以让您满意。如果不满意,您可以围绕它包装一个函数。
为什么不直接使用正则表达式呢?
因为没有理由在最常见的数字上使用正则表达式
string*
表示“以...开头”。
*string
表示“以...结尾”。
所以即使我使用正则表达式来覆盖复杂的模式,对于这些模式中的任何一个使用正则表达式也是毫无意义的。在内部,我使用 substr() 代替。如果您愿意提供更多针对此类简单模式的加速,请随时推送给我。
Composer
composer require rkr/wildcards ^1.0
示例
<?php use Kir\StringUtils\Matching\Wildcards\Pattern; (new Pattern('test.*'))->match('test.txt'); // true Pattern::create('test.*')->match('test.txt'); // true Pattern::create('*.txt')->match('test.txt'); // true Pattern::create('*.*')->match('test.txt'); // true Pattern::create('test*txt')->match('test.txt'); // true Pattern::create('test?txt')->match('test.txt'); // true Pattern::create('t*.???')->match('test.txt'); // true Pattern::create('t*t?.txt')->match('test8.txt'); // true