2012-04-19 71 views
0

有時我會在我的項目中有一個字符串,它只是一個首字母縮寫詞(即首字母),它需要以大寫形式顯示所有字母。str_replace只做部分工作

例如。

str_replace("Mcg","MCG",$string); 

這做這項工作的罰款。但是,有時這個字符串會包含一個也是單詞開頭的首字母縮寫詞。

例如。

str_replace("Wa","WA",$string) 

這將明顯改變的話,如「想」到「希望」,我顯然不希望。有什麼方法可以改變2或3個字符的字嗎?我正在考慮將字符串爆炸成一個數組並從那裏開始。還是有更容易的功能,我應該利用?

回答

0

使用正則表達式對word boundaries即停,即是這樣的:

preg_replace('/(\b)Wa(\b)/', 'WA', $string); 

這將替換「娃」的所有出現'WA',只要有空格,逗號,小圓點,換行符或沒有任何字符的左邊或右邊(我確信我在那裏丟失了幾個字符)。

這比在篩選空白(或空格),因爲你可能有以下情況較好:

He wants -> He wants 
WaT -> WaT 
Wa -> WA 
Do be do be do Wa. -> Do be do be do WA. 
Some Wa -> Some WA 
Foo Wa Bar -> Foo WA Bar 
+0

感謝CodeCaster - 像一種享受! – user1267980 2012-04-20 00:03:03

1

如果高效化是不是一個問題,你可以這樣做:

preg_replace("/\bWa\b/","WA",$string) 
+0

謝謝codaddict,正是我一直在尋找。 – user1267980 2012-04-20 00:03:28