2012-04-19 90 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