PHP Splat: 支持类 Glob 文件匹配和模式匹配的正则工具
Splat 是由 Chris Kankiewicz 开发的 PHP 实用程序,可提供类似 glob 的文件和模式匹配。使用此实用程序,你可以使用提供的 Pattern
实例将模式(参见 README)转换为正则表达式:
// Returns '#^foo$#'
Pattern::make('foo')->toRegex();
// Returns '#^foo/bar\.txt$#'
Pattern::make('foo/bar.txt')->toRegex();
// Returns '#^file\.(yml|yaml)$#'
Pattern::make('file.{yml,yaml}')->toRegex();
// You can control line anchors as well
// Returns '#foo#'
Pattern::make('foo')->toRegex(Glob::NO_ANCHORS);
// Returns '#^foo#'
Pattern::make('foo')->toRegex(Glob::START_ANCHOR);
// Returns '#^foo$#'
Pattern::make('foo')->toRegex(Glob::BOTH_ANCHORS);
该软件包还包括文件 glob 实用程序,用于获取与文件 glob 模式匹配的文件列表。
// 获取目录中的文件列表(返回 Symfony Finder 组件)
Glob::in('**.txt', 'some/file/path');
Glob::matchStart('foo/*', 'foo/bar.txt'); // true
Glob::matchStart('foo/*', 'bar/foo.txt'); // false
Glob::matchEnd('**.txt', 'foo/bar.txt'); // true
Glob::matchEnd('**.txt', 'foo/bar.log'); // false
// 过滤和拒绝文件名数组
// 返回 ['foo.txt', 'foo/bar.txt']
Glob::filter('**.txt', [
'foo', 'foo.txt', 'bar.zip', 'foo/bar.png', 'foo/bar.txt',
]);
// 返回 ['foo', 'bar.zip', 'foo/bar.png']
Glob::reject('**.txt', [
'foo', 'foo.txt', 'bar.zip', 'foo/bar.png', 'foo/bar.txt',
]);
您可以了解有关此软件包的更多信息,获取完整的安装说明,并查看 GitHub 上的源代码。
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。