2011-03-05 74 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