hollyit/token-replace

定义令牌并在字符串中替换其出现。

1.0.2 2023-03-02 15:32 UTC

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。我非常开放,愿意扩展项目以涵盖更多用例。