cinam / template-parser
模板解析器
1.1.4
2020-11-04 08:35 UTC
Requires
- php: >=5.4.0
Requires (Dev)
- phpunit/phpunit: ^5.7
README
一个简单的文本解析器。它允许你执行以下文本转换
- 用标量变量替换占位符,
- 使用迭代从数组变量中替换占位符,
- 处理逻辑条件。
数组嵌套没有限制。
用法
$parser = new \Cinam\TemplateParser\Parser(); $result = $parser->parse($text, $variables);
示例
示例 1 - 简单变量
$text = 'Hello, {user}!'; $variables = [ 'user' => 'Peter', ]; $parser = new \Cinam\TemplateParser\Parser(); echo $parser->parse($text, $variables);
你好,彼得!
示例 2 - 条件
$text = <<<EOT Your score: {score} points. [IF score > highScore] Congratulations, it's the new high score! [ENDIF] EOT; $parser = new \Cinam\TemplateParser\Parser(); echo $parser->parse($text, ['score' => 50, 'highScore' => 60]);
你的得分:50分。
echo $parser->parse($text, ['score' => 50, 'highScore' => 40]);
你的得分:50分。
恭喜你,这是新的高分!
示例 3 - 包含 ELSE 的条件
$text = '[IF age >= 18]You are an adult[ELSE]Sorry, you are too young[ENDIF]'; $parser = new \Cinam\TemplateParser\Parser(); echo $parser->parse($text, ['age' => 18]);
你是成年人
echo $parser->parse($text, ['age' => 15]);
抱歉,你太年轻了
示例 4 - 迭代
$text = <<<EOT Summary: [START scores] {user}, your score is {score}. [IF score > personalBest]Congratulations, it's your personal best![ENDIF] [END] EOT; $variables = [ 'scores' => [ [ 'user' => 'Peter', 'score' => 20, 'personalBest' => 25, ], [ 'user' => 'Mike', 'score' => 30, 'personalBest' => 30, ], [ 'user' => 'John', 'score' => 30, 'personalBest' => 25, ], ], ]; $parser = new \Cinam\TemplateParser\Parser(); echo $parser->parse($text, $variables);
摘要
彼得,你的得分是 20。
迈克,你的得分是 30。
约翰,你的得分是 30。恭喜你,这是你的个人最佳成绩!