lukaswhite / token-strings
用于替换字符串中标记的库
1.0
2018-10-23 10:50 UTC
Requires (Dev)
- phpunit/php-code-coverage: ^6.0
- phpunit/phpunit: 7.0
This package is auto-updated.
Last update: 2024-09-24 05:06:06 UTC
README
这个简单的库允许您创建一个包含标记的字符串,例如
Dear [[FORENAME]] [[SURNAME]],
然后在运行时为标记提供值
[ 'FORENAME' => 'Joe', 'SURNAME' => 'Bloggs', ]
然后运行标记替换
Dear Joe Bloggs,
它对页面标题、通知模板、邮件合并等非常有用。
安装
使用Composer安装
composer require lukaswhite/token-strings
基本用法
创建一个实例
use Lukaswhite\TokenStrings\Substitutor( ); $substitutor = new Substitutor( 'Dear [[FORENAME]] [[SURNAME]],', [ 'forename' => 'Joe', 'surname' => 'Bloggs', ] );
然后运行它
$replaced = $substitutor->run( ); // or $replaced = ( string ) $substitutor;
高级用法
您可以在任何时候修改模板内容
$substitutor->setContent( 'Hey [[FORENAME]]' );
添加标记
$substitutor->addToken( 'age', 43 );
清除标记
$substitutor->clearTokens( );
如果您想为标记使用不同的标记
$substitutor->setOpeningTag( '{{' )->setClosingTag( '}}' );
由于上面示例中的闭合标签只是打开标签的反转,您可以直接这样做
$substitutor->setOpeningTag( '{{' );
除了传递字符串作为标记值外,您还可以传递一个对象,前提是它实现了魔法__toString()
方法
class Person { private $forename; private $surname; public function __construct( $forename, $surname ) { $this->forename = $forename; $this->surname = $surname; } public function __toString( ) { return sprintf( '%s %s', $this->forename, $this->surname ); } } $substitutor = new Substitutor( 'Dear [[NAME]],', [ 'NAME' => new Person( 'Joe', 'Bloggs' ), ] );
要获取可用标记的列表,调用getAvailableTokens()
。
validate()
方法检查您提供的字符串是否不包含任何未提供值的标记。
注意
- 标记只能包含字母、数字、破折号和下划线
- 按照惯例,标记为大写,但如果您提供了一个包含标记的小写字符串的数组,它将为您将其转换为大写
- 如果字符串包含您未提供值的标记,它将用空字符串替换它们