hollyit / token-replace
定义令牌并在字符串中替换其出现。
Requires
- php: ^8.1
- phpunit/phpunit: ^10.0
This package is auto-updated.
Last update: 2024-09-20 14:55:46 UTC
README
此简单包允许您定义可在字符串中替换的令牌。与简单的str_replace不同,Token Replace允许您为每个令牌添加选项。让我们从一个例子开始。
$input="Today is { date:m }}/{{ date:d }}/{{ date:y }}.";
echo \HollyIT\TokenReplace\TokenReplacer::from($input)
->with('date', \HollyIT\TokenReplace\Transformers\DateTransformer::class)
// Results in: Today is 11/11/21.
令牌有一定的结构,让我们看看
{{ date:m }}。这是一个默认的令牌格式,但
此格式可以在全局和实例级别进行配置。
转换器
令牌的替换通过转换器处理。转换器可以是闭包或简单类。
可以通过在应用的引导阶段执行以下操作将转换器添加到TokenReplacer的每个实例或全局添加:
\HollyIT\TokenReplace\TokenReplacer::$defaultTransformers = [
'date' => \HollyIT\TokenReplace\Transformers\DateTransformer::class
];
通过实例添加令牌:$instance->with({token name}, {class name, transformer instance or closure}); 对于基于闭包的转换器,其签名是
function(string $options, TokenReplacer $replacer)
包含的转换器
所有这些转换器都位于 \HollyIT\TokenReplace\Transformers 命名空间下。
还有位于 \HollyIT\TokenReplace\Transformers\Laravel 的特殊Laravel转换器
后处理。
除了提取项之外,没有转换器执行任何其他处理。如果您想进行进一步处理,例如转义替换,可以定义一个onReplace回调
$replacer->onReplace(function(string $result, string $token, string $options){
return strtoupper($result);
});
此回调将为找到的每个令牌出现运行,因此您可以通过检查 $token 属性进一步过滤要操作的令牌。
无效或缺失的令牌
默认情况下,无效和缺失的令牌将保留在字符串中。要防止此操作,可以在TokenReplacer上设置removeEmpty()。
未来计划
此项目源于我在许多项目中遇到的一个重复场景。对此没有真正的未来计划。整个目标是为一个常见问题提供一个非常简单的解决方案。您可能会发现应该包含的转换器或功能。如果是这样,请提交PR。我非常开放,愿意扩展项目以涵盖更多用例。