我想通過這個輸入如何使用php函數mb_convert_case並只將某些單詞轉換爲上面的單詞?
$string = "AL & JRL buSineSS CENTRE is the best";
預期結果:
AL & JRL商務中心是最好的
我曾嘗試下面的代碼,但它轉換的一切。
mb_convert_case($string, MB_CASE_TITLE, "UTF-8");
我想通過這個輸入如何使用php函數mb_convert_case並只將某些單詞轉換爲上面的單詞?
$string = "AL & JRL buSineSS CENTRE is the best";
預期結果:
AL & JRL商務中心是最好的
我曾嘗試下面的代碼,但它轉換的一切。
mb_convert_case($string, MB_CASE_TITLE, "UTF-8");
所以我認爲你只是想讓潛在的首字母縮寫詞被忽略,對嗎?那麼,有幾個想法。首先,你可以製作一個腳本,忽略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?
總是好的,知道的工具是最適合的工作是什麼。同樣,我相信你知道你自己的需求,我相信你選擇了正確的工具。只是認爲這是一個有趣的閱讀,可以幫助任何人磕磕絆絆。
最後的思考
您可以使用上述實例的組合來量身定製自己的解決方案。結合方法常常令人滿意,從而減少了每種方法的缺點。
希望這對你有所幫助,祝你好運!
如果你想幫忙,你應該告訴我們你想轉換和不轉換單詞的標準。 –
打破字符串,只傳遞你想要的部分。 – chris85