2016-02-11 62 views
0

我想通過這個輸入如何使用php函數mb_convert_case並只將某些單詞轉換爲上面的單詞?

$string = "AL & JRL buSineSS CENTRE is the best"; 

預期結果:

AL & JRL商務中心是最好的

我曾嘗試下面的代碼,但它轉換的一切。

mb_convert_case($string, MB_CASE_TITLE, "UTF-8"); 
+0

如果你想幫忙,你應該告訴我們你想轉換和不轉換單詞的標準。 –

+0

打破字符串,只傳遞你想要的部分。 – chris85

回答

1

所以我認爲你只是想讓潛在的首字母縮寫詞被忽略,對嗎?那麼,有幾個想法。首先,你可以製作一個腳本,忽略3個或更少的字母。在我看來,這不是一個好的解決方案。那麼「it」,「the」等呢?第二種是使用已知字詞的字典運行ucwords()。 Yuck--對於這樣一個看起來很簡單的任務來說,這將會讓人難以置信!

我建議乾脆忽略任何全部大寫的東西。這樣,無論首字母縮寫是什麼(或長度),它都會忽略它。像這樣的東西可能就足夠了:

$phrase = "Hello this is a TeSt pHrAse, to be tested ASAP. Thanks."; 

$chunks = explode(" ", $phrase); 

$result = ""; 

foreach($chunks as $chunk){ 
    if(!ctype_upper($chunk)) { 
     $result .= ucwords($chunk) . " "; 
    } else { 
     $result .= $chunk . " "; 
    } 

} 

$result = rtrim($result); 

結果:

Hello This Is A Test Phrase, To Be Tested ASAP. Thanks.

這是不是最優雅的解決方案,這只是我一直有種想過自從看了你的問題。但是,如果您知道您的首字母縮寫詞將大寫,這將完全跳過它們,只有標題 - 您的實際單詞。

告誡

上面所提供的例子將不工作用的縮寫接合到一個字由短劃線,下劃線等上間隔這隻適用。您可以輕鬆地根據您的需求調整以上,並使其更加智能一點。不過,我想清楚地表明,這可能無法滿足所有需求!

另外,這個例子在你的例子中會出現。不幸的是,除非你使用字典或計算字符串長度,否則這是最接近的。這個解決方案對於大量功能來說是最小的工作。當然,有比較的字典會很好(不管是用縮寫詞還是單詞字典),但即使如此,要保持更新也是非常困難的。名字將丟掉一個可以安全轉換爲標題大小的字典。不太常用的首字母縮寫詞肯定不會在縮寫詞典中出現。不幸的是,所有解決方案都有無盡的警告。選擇最適合你的東西。

希望這會有所幫助。如果您還有其他問題,請發表評論,我會盡我所能提供幫助。

隨機性

最後一件事。我用ucwords()。隨意使用任何你想要的。我相信你已經知道其中的差別,但檢查了這一點:

Best function for Title capitlization?

總是好的,知道的工具是最適合的工作是什麼。同樣,我相信你知道你自己的需求,我相信你選擇了正確的工具。只是認爲這是一個有趣的閱讀,可以幫助任何人磕磕絆絆。

最後的思考

您可以使用上述實例的組合來量身定製自己的解決方案。結合方法常常令人滿意,從而減少了每種方法的缺點。

希望這對你有所幫助,祝你好運!