0

我正在为我们的内部目的创建一个小型模板引擎。我们有几个 HTML 模板,其中包含 {token.name.value} 形式的令牌。我们将它提交给后端,然后后端会做它的事情并用相应的值替换令牌。但是,这是一个漫长的过程,并且在模板不起作用的情况下会有很多来回。

因此,我正在考虑将所有令牌作为 {key:value} 对在数据库或 json 文件中。然后我们可以选择模板和 json 字典文件,应用程序可以使用字典文件替换模板中的标记并向我们显示输出。

我可以完成其余的工作,但我不确定如何替换模板中的标记。我应该如何解析 html 模板?是否推荐使用 preg_replace 函数?

谢谢。

4

1 回答 1

0

IHMO 似乎您的用例需要一个真正的模板引擎,例如出色的TwigSmarty。他们不必担心如何解析和移动模板代码,让您的生活更轻松,让您专注于您的应用程序逻辑。

但有时不必处理成熟的模板语言并且仍然能够替换简单的键:值对可能是实用的。对于那些特定的、狭窄的用例,这是我使用的一个小辅助函数。

function replace_tokens($html) {
  $token_format = '/{([^}]+)}/';

  preg_match_all($token_format, $html, $matches, PREG_SET_ORDER);

  foreach ($matches as $match) {
    switch ($match[1]) {
      case 'token.one':
        $html = preg_replace('/' . $match[0] . '/', 'Value One !', $html, 1);
        break;

      case 'token.two':
        $html = preg_replace('/' . $match[0] . '/', 'Value Two.', $html, 1);
        break;

      default:
        break;
    }
  }

  return $html;
}

它又快又脏,但它完成了解析工作。该switch部分是可选的,有许多更好的方法可以将您的{key}匹配项与实际密钥进行比较。

于 2013-10-17T21:05:45.340 回答