2011-03-05 34 views
0

我已经成功地通过我的翻译功能__();翻译了一些报价,现在我想呼应只随意这些报价中的一个。所有的报价都在这个字符串分隔以特殊字符像|如何随机回显一部分字符串?

SOFAR我只有这一点。什么代码应该在这下面解决我的随机回声?

$quotes = 
__("IF YOU MAKE EVERYTHING BOLD, NOTHING IS BOLD") . "|" . 
__("Quality of design is an indicator of credibility") . "|" . 
__("People ignore design, that ignores people"); 

(一个重要的限制:它是必不可少的报价与__("");精确地关闭sothat他们可以检查和翻译。)__($variable)行得有,我买了那么这些电流清理脚本工作将无法工作。

+0

你不能只使用['array_rand'](http://php.net/manual/en/function.array-rand.php)?例如'_(array_rand(array(“STRING ONE”,“String two”,“String three”)));'或'$ quotes = array_rand(array(_(“STRING ONE”,“String two”,“String three “)));'(授予array_rand返回键,但只是描绘点) – 2011-03-05 21:55:03

+0

@Brad,不幸的是没有!在这个特殊情况下。 – Sam 2011-03-05 22:15:11

+0

澄清:'__'是PHP中的一个函数吗? – 2011-03-06 00:02:06

回答

2

你已经呼吁每个报价__()独立,为什么不救所有的额外翻译和做类似:

$quotes = array('quote1', 'quote2', 'quote3'); 
$index = array_rand($quotes); 
echo __($quotes[$index]); 

编辑:为了满足您的其他要求,即调用__()必须立即包围每个字符串,你可以这样做:

$quotes = array(__('quote1'), __('quote2'), __('quote3')); 
$index = array_rand($quotes); 
echo $quotes[$index]; 

最大的缺点这里要说的是你现在找了一个翻译在阵,E每个字符串虽然只有一种是印刷的,但这与“一大串”解决方案中的情况相同。

+0

清理脚本搜索__(“....”)和__($变量)不适用于我的翻译脚本! – Sam 2011-03-05 22:16:37

+1

如果你很重要的是让字符串立即拥有'__()',这对数组仍然可以正常工作(尽管你失去了避免翻译字符串而不输出的副作用)。 – 2011-03-05 22:18:48

1

为什么饼干他们都在一个字符串,而不是一个数组?如果是这样的话,你的问题将立即解决。作为看台,分成|并随机索引到创建的数组中以选择随机引用。

1

为什么你不把它们放在一个数组中,只翻译实际输出的内容?

$quotes = array(
    "IF YOU MAKE EVERYTHING BOLD, NOTHING IS BOLD", 
    "Quality of design is an indicator of credibility", 
    "People ignore design, that ignores people", 
); 
$randomQuote = $quotes[ rand(0, count($quotes)-1)]; 
echo __($randomQuote); 
+0

在不相干的笔记上,我不应该在这里使用逗号:“设计”。 – 2011-03-05 22:05:40

+0

虽然你对这个逗号是正确的,但__($ var)不会工作!实际上,我添加了逗号以显示逗号不能用作分隔符来切断问题 – Sam 2011-03-05 22:19:07