esi/wildcard

此包已被废弃,不再维护。未建议替代包。

一个简单的通配符匹配器。

v1.0.0 2024-02-02 09:31 UTC

This package is auto-updated.

Last update: 2024-06-03 07:05:07 UTC


README

重要

此库现已归档,目前没有计划进行维护。

此项目旨在为php提供一个非常简单的组件以支持通配符。通配符是 *(零个或多个字符)和 ?(恰好一个字符)。该组件与文件名无关。您还可以将其用于命名空间、url和其他字符串。

为什么不能只提供一个简单的函数呢?

因为效率。当您创建 Wildcard 类的实例时,您也“编译”了模式。这意味着我试图为您后来的输入找到最优的测试方法。所以如果您在同一运行中多次运行相同的模式,您可能从中受益。如果不,界面仍然足够简单,足以让您满意。如果不,请围绕它封装一个函数。

为什么不直接使用正则表达式呢?

因为对于最常见的模式没有理由使用正则表达式

string* 表示 "以...开头"。 *string 表示 "以...结尾"。

所以即使我使用正则表达式来覆盖复杂的模式,对于这些模式中的任何一个使用正则表达式也是毫无意义的。如果您喜欢为这些简单的模式提供更多的速度提升,请随时推动一些。

Composer

composer require esi/wildcard ^1.0

示例

use Esi\Wildcard\Wildcard;

(new Wildcard('test.*'))->match('test.txt');      // true
Wildcard::create('test.*')->match('test.txt');    // true
Wildcard::create('*.txt')->match('test.txt');     // true
Wildcard::create('*.*')->match('test.txt');       // true
Wildcard::create('test*txt')->match('test.txt');  // true
Wildcard::create('test?txt')->match('test.txt');  // true
Wildcard::create('t*.???')->match('test.txt');    // true
Wildcard::create('t*t?.txt')->match('test8.txt'); // true

关于

要求

  • PHP 8.2.0 或更高版本。

提交错误和功能请求

错误和功能请求在 GitHub 上跟踪

问题是最快报告错误的途径。如果您发现错误或文档错误,请首先检查以下内容

  • 没有关于该错误的已开放问题
  • 该问题尚未得到解决(例如,在已关闭的问题中)

贡献

Wildcard 接受来自社区的代码和文档贡献。这些贡献可以以问题或 Pull Requests 的形式提交到 Wildcard 仓库

Wildcard 采用 MIT 许可证。当您向 Wildcard 提交新功能或补丁时,您是在给予许可,允许在这些功能或补丁下使用 MIT 许可证。

Wildcard 尽力遵循 PHPStan 级别 9 的严格规则和前沿技术。请确保任何贡献都这样做。

指南

在我们探讨如何做之前,这里有指南。如果您的 Pull Requests 无法通过这些指南,它将被拒绝,您需要在做出更改后重新提交。这听起来可能有点严格,但这是为了维护代码库的质量所必需的。

PHP 样式

请确保所有新的贡献符合 PSR-12 编码风格指南。该项目目前尚未完全符合 PSR-12,但为了确保最轻松地过渡到编码指南,我建议任何贡献都遵循这些指南。

文档

如果您更改了需要修改文档的内容,那么您需要添加相应的更改。新的方法、参数、更改默认值、添加常量等,所有这些都需要对文档进行修改。变更日志也必须在每次更改时更新。同时,PHPDoc 块也必须维护。

函数/变量文档(PHPDoc)

请确保所有新的贡献都遵循

在编写新函数或更改现有文档时。

分支管理

一次只做一件事:拉取请求应只包含一个更改。这并不意味着只有一个提交,而是一个更改——不管需要多少次提交。这样做的原因是,如果您同时更改 X 和 Y 并提交一个包含两者的拉取请求,我们可能真的需要 X 但不同意 Y,这意味着我们无法合并请求。使用 Git-Flow 分支模型,您可以创建这两个功能的分支并提交两个请求。

作者

Eric Sizemore - admin@secondversion.com - https://www.secondversion.com

许可证

Wildcard 采用 MIT 许可证授权 - 有关详细信息,请参阅 LICENSE.md 文件

致谢 / 贡献者

此存储库是从 rkrx/php-wildcards 分支出来的。感谢他们以及所有贡献者!