将变量添加到.ini文件值

时间:2014-02-12 10:29:38

标签: php string ini

我正在测试一种通过每种语言的.ini文件运行翻译的方法。可在此处找到测试站点,原谅URL:www.exodus-squad.com

但是,在右侧框中我想显示以下文字:

  

随着减少排放的动力不断加快,   电动和混合动力技术正在向中心舞台靠拢。在   2015年,发动机博览会将再次举办电气& amp;混合动力   亭!

但是短语2015Engine Expo都是PHP配置文件中的变量。目前,我的.ini文件中的部分如下所示:

[pavilion]
texta  = "With the drive to reduce emissions continuing to gather pace, electric and hybrid technologies are moving closer to centre stage. In "
textb  = ", "
textc  = " will once again host the Electric & Hybrid Pavilion!"

我的页面代码如下:

<p>
    <?=$i['pavilion']['texta'];?>
    <?=$year?>
    <?=$i['pavilion']['textb'];?>
    <?=$show?>
    <?=$i['pavilion']['textc'];?>
</p>

然而,突破并回到文本段落是一个问题,但是,特别是当涉及到其他语言在不同的地方使用逗号,或重新排列的单词等时。理想情况下,我希望能够做到像这样的东西:

texta  = "With the drive to reduce emissions continuing to gather pace, electric and hybrid technologies are moving closer to centre stage. In " . $year . ", " . $show . " will once again host the Electric &amp; Hybrid Pavilion!"

或者:

texta  = "With the drive to reduce emissions continuing to gather pace, electric and hybrid technologies are moving closer to centre stage. In {$year}, {$show} will once again host the Electric &amp; Hybrid Pavilion!"

但两者都不是有效的语法。有谁知道这是否可行?


修改

收到几个答案后,我的.ini文件现在看起来像这样:

texta  = "With the drive to reduce emissions continuing to gather pace, electric and hybrid technologies are moving closer to centre stage. In %d, %s will once again host the Electric &amp; Hybrid Pavilion!"

我的代码如下:

<?=sprintf($i['pavilion']['texta'], $year, $show); ?>

但这只是打印后的变量?

  

随着减少排放的努力不断加快,电动和混合动力技术正在向中心舞台靠拢。在%d中,%s将再次成为电子&amp; Hybrid Pavilion!2015Engine Expo

编辑#2

这是我的parse_ini_file()代码:

$find_lang = $_SERVER['REQUEST_URI'];
if (strpos($find_lang, '/fr/') !== false) {
    $lang = 'fr';
}
else if (strpos($find_lang, '/de/') !== false) {
    $lang = 'de';
}
else if (strpos($find_lang, '/it/') !== false) {
    $lang = 'it';
}
else {
    $lang = 'en';
}

$i = parse_ini_file($lang . ".ini", true);

编辑#3

我甚至尝试稍微破解代码,因此首先创建$texta变量,然后通过sprintf()回显到页面,但输出保持完全相同:

<?php
$texta = $i['pavilion']['texta'];
echo sprintf($texta, $year, $show);
?>

作品!谢谢大家。

2 个答案:

答案 0 :(得分:1)

您可以使用sprintf,它可以让您将占位符放入文本中,以后可以填写。它可以做得更多,它真的很有用......你甚至可以使用带编号的占位符,这样它们的顺序就可以改变 - 非常方便翻译。

例如:

texta = "Blah Blah Blah %d Blah Blah %s"

然后在你的代码中:

<p>
    <?=sprintf($i['pavilion']['texta'], $year, $show)?>
</p>

答案 1 :(得分:1)

您可以使用字符串格式:http://www.php.net/sprintf

text="First part %s second part %s last part";

然后在你的echo文件中:

<?php echo sprintf($i['pavilion']['text'], $year, $show); ?>