模板字符串.
这个链接可能有点帮助: PHP有像Python的模板字符串这样的功能吗?
什么我的主要问题是,是要知道是否有更好的方式存储文本字符串.
现在,这通常是通过一个文件夹(DIR)和大量具有不同字符串的单个独立文件来完成的,并且根据可能需要的内容,获取一个文件的内容,处理并用值替换{tags}.
或者,最好在一个文件数组[]中定义所有这些内容吗?
greetings.tpl.txt
['welcome'] = 'Welcome {firstname} {lastname}'.
['good_morning'] = 'Good morning {firstname}'.
['good_afternoon'] = 'Good afternoon {firstname}'.
Run Code Online (Sandbox Code Playgroud)
这是另一个例子,https://github.com/oren/string-template-example/blob/master/template.txt
Thx提前!
包含解决方案的答案,声明应该使用include("../ file.php"); 从来没有接受过这里.一个解决方案,演示如何将已定义字符串的LIST读入数组.该定义已基于数组.
要向模板添加值,您可以使用strtr.示例如下:
$msg = strtr('Welcome {firstname} {lastname}', array(
'{firstname}' => $user->getFistName(),
'{lastname}' => $user->getLastName()
));
Run Code Online (Sandbox Code Playgroud)
关于存储字符串,您可以为每种语言保存一个数组,然后只加载相关的数组.例如,你将拥有一个包含2个文件的目录:
每个文件应包含以下内容:
<?php
return (object) array(
'WELCOME' => 'Welcome {firstname} {lastname}'
);
Run Code Online (Sandbox Code Playgroud)
当您需要翻译时,您可以执行以下操作:
$dictionary = include('language/en.php');
Run Code Online (Sandbox Code Playgroud)
然后字典会有一个你可以解决的对象.更改上面的示例,它将是这样的:
$dic = include('language/en.php');
$msg = strtr($dic->WELCOME, array(
'{firstname}' => $user->getFistName(),
'{lastname}' => $user->getLastName()
));
Run Code Online (Sandbox Code Playgroud)
为避免在字典中没有模板时出现这种情况,可以使用带有默认文本的三元运算符:
$dic = include('language/en.php');
$tpl = $dic->WELCOME ?: 'Welcome {firstname} {lastname}';
$msg = strtr($tpl, array(
'{firstname}' => $user->getFistName(),
'{lastname}' => $user->getLastName()
));
Run Code Online (Sandbox Code Playgroud)
人们通常做什么来编辑db中的文本,你可以有一个简单的导出(例如var_export)脚本来从db同步到文件.
希望这可以帮助.
| 归档时间: |
|
| 查看次数: |
248 次 |
| 最近记录: |