cinam/template-parser

1.1.4 2020-11-04 08:35 UTC

This package is auto-updated.

Last update: 2024-09-04 16:52:11 UTC


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。恭喜你,这是你的个人最佳成绩!