PHP Splat: 支持类 Glob 文件匹配和模式匹配的正则工具

Laravel

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 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

原文地址:https://laravel-news.com/glob-like-file-...

译文地址:https://learnku.com/laravel/t/66564

本文为协同翻译文章,如您发现瑕疵请点击「改进」按钮提交优化建议
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!