2011-08-31 67 views
2

我有一個SAGE200數據庫,其中包含大多數情況下以大寫字母輸入的產品名稱。這些被輸入時顯示在我們的網站上,這是不美觀的。 我是PHP新手,但發現了ucwords函數,並且使用該函數以及strtolower,以便最終顯示正在顯示的項目的Title Case。 這樣更好,但仍然很不理想,因爲有些產品需要一些大寫字母或單詞,因爲這是他們正確的命名約定。UCWords函數調整

有沒有一些方法,我可以在標題案例應用到我的產品名稱,以及有針對被列出我定義的地方查找,以留下一些話如全部大寫所以這個代碼?

這都是在Magento 1.4.0.1。

也許是一個翻譯文件?

我真的不知道的接近這一目標的最佳方式,並希望任何指針。

乾杯!

+0

我沒有法師安裝可用的副手,但你最好的辦法可能是創建一個幫手,並用它在模型的產品名稱 - 如果我能得到一個安裝下去,我肯定會交一些代碼。 – Nic

+0

這將是一流的。我還不知道如何做這種事情(沒有花費足夠的時間!) - 謝謝! – robgt

回答

0

如果你已經知道的翻譯(我認爲是這樣,因爲你提出了一個翻譯文件),爲什麼不直接轉換成你的數據庫中的產品名稱?

0

一種選擇是離開你一定要大寫爲大寫字母,只有你ucwords函數大寫單詞的開頭字母。你不會使用ucwords。您將使用:

$string = preg_replace('/(^|[^a-zA-Z])[a-z]/e', 'strtoupper("$0")', $string); 

這將大寫不跟隨字母的任何字母。

否則,如果您想要爲大寫的單詞列表,我會做,使用ucwords因爲之前從來沒有ucwords字母小寫字母。它看起來像:

$string = strtolower($string); 
foreach($mywordlist as $word) 
    $string = str_replace(strtolower($word), strtoupper($word), $string); 
$string = ucwords($string); 

的說明:我上面使用preg_replace函數是我用ucwords,而不是所有的時間,因爲它在那裏轉換爲大寫有非空格字符的話。例如:ucwords會打勾成Tick-tock。我的preg_replace把它變成了Tick-Tock。