当前位置:  开发笔记 > 编程语言 > 正文

存储字符串模板

如何解决《存储字符串模板》经验,为你挑选了1个好方法。

模板字符串.

这个链接可能有点帮助: PHP有像Python的模板字符串这样的功能吗?

什么我的主要问题是,是要知道是否有更好的方式存储文本字符串.

现在,这通常是通过一个文件夹(DIR)大量具有不同字符串的单个独立文件来完成的,并且根据可能需要的内容,获取一个文件的内容,处理并用替换{tags}.

或者,最好在一个文件数组[]中定义所有这些内容吗?

greetings.tpl.txt

['welcome'] = 'Welcome {firstname} {lastname}'.
['good_morning'] = 'Good morning {firstname}'.
['good_afternoon'] = 'Good afternoon {firstname}'.

这是另一个例子,https://github.com/oren/string-template-example/blob/master/template.txt

Thx提前!

包含解决方案的答案,声明应该使用include("../ file.php"); 从来没有接受过这里.一个解决方案,演示如何将已定义字符串的LIST读入数组.该定义已基于数组.



1> t1gor..:

要向模板添加值,您可以使用strtr.示例如下:

$msg = strtr('Welcome {firstname} {lastname}', array(
    '{firstname}' => $user->getFistName(),
    '{lastname}' => $user->getLastName()
));

关于存储字符串,您可以为每种语言保存一个数组,然后只加载相关的数组.例如,你将拥有一个包含2个文件的目录:

语言

en.php

de.php

每个文件应包含以下内容:

 'Welcome {firstname} {lastname}'
);

当您需要翻译时,您可以执行以下操作:

$dictionary = include('language/en.php');

然后字典会有一个你可以解决的对象.更改上面的示例,它将是这样的:

$dic = include('language/en.php');
$msg = strtr($dic->WELCOME, array(
    '{firstname}' => $user->getFistName(),
    '{lastname}' => $user->getLastName()
));

为避免在字典中没有模板时出现这种情况,可以使用带有默认文本的三元运算符:

$dic = include('language/en.php');
$tpl = $dic->WELCOME ?: 'Welcome {firstname} {lastname}';
$msg = strtr($tpl, array(
    '{firstname}' => $user->getFistName(),
    '{lastname}' => $user->getLastName()
));

人们通常做什么来编辑db中的文本,你可以有一个简单的导出(例如var_export)脚本来从db同步到文件.

希望这可以帮助.

推荐阅读
夏晶阳--艺术
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有