jesseschutt / token-replacer
定义标记并在字符串中替换其出现。
Requires
- php: ^8.2
- laravel/framework: ^10.0|^11.0
- phpunit/phpunit: ^10.0|^11.0
Requires (Dev)
- laravel/pint: ^1.17
- orchestra/testbench: ^9.3
This package is auto-updated.
Last update: 2024-09-17 19:24:05 UTC
README
信用
此包是 原始包 的分支,由HollyIT的Jamie Holly创建。
安装
composer require jesseschutt/token-replacer
配置
您可以通过运行以下命令发布配置文件
php artisan vendor:publish --provider="JesseSchutt\TokenReplacer\TokenReplacerServiceProvider"
这将在您的 config 目录中创建一个 token-replacer.php 文件。在这里,您可以设置默认标记的开始和结束字符、默认标记分隔符和默认转换器。
说明
此包允许您在字符串中定义可替换的标记。与简单的 str_replace 不同,Token Replacer 允许您为每个标记添加选项。让我们从一个例子开始。
use \JesseSchutt\TokenReplacer\Facades\TokenReplacer;
use \JesseSchutt\TokenReplacer\Transformers\DateTransformer;
$input="Today is {{ date:m }}/{{ date:d }}/{{ date:y }}.";
echo TokenReplacer::from($input)->with('date', DateTransformer::class)
// Results in: Today is 11/11/21.
标记有一定的结构,让我们看看 {{ date:m }}。这是一个默认标记格式,但此格式可以全局和实例化配置。
转换器
标记的替换通过转换器处理。转换器可以是闭包或简单的类。
可以将转换器添加到 TokenReplacer 的每个实例或通过在配置文件中将它们添加到 default_transformers 数组中全局添加。
注意:全局转换器实例化时不会接收任何数据。DateTransformer 和 AuthTransformer 是仅有的两个适用于全局使用的内置转换器。
每个实例的标记通过 $instance->with({token name}, {class name, transformer instance or closure}); 添加。对于基于闭包的转换器,签名是
function(string $options)
包含的转换器
所有这些转换器都位于 \JesseSchutt\TokenReplacer\Transformers 命名空间下。
还有特殊的 Laravel 转换器位于 \JesseSchutt\TokenReplacer\Transformers\Laravel
后处理
除了提取项目之外,没有转换器执行任何其他处理。如果您想执行进一步的处理,例如转义替换项,可以定义一个 onReplace 回调
$replacer->onReplace(function(string $result, string $token, string $options){
return strtoupper($result);
});
此回调将为每个找到的标记出现执行,因此您可以通过检查 $token 属性来进一步筛选要操作的标记。
无效或缺失的标记
默认情况下,无效和缺失的标记将保留在字符串中。要防止这种情况,可以在 TokenReplacer 上设置 removeEmpty()。