Php stru_replace只执行部分工作

Php stru_replace只执行部分工作,php,str-replace,Php,Str Replace,有时我会在我的项目中有一个字符串,它只是一个首字母缩略词(即缩写),所有字母都需要大写 例如 这工作做得很好。但是,有时此字符串将包含首字母缩略词,该首字母缩略词也是单词的开头 例如 这显然会把“想要”这样的词变成我显然不想要的“想要”。有没有什么方法我可以只改变2或3个字符的单词?我在考虑把绳子炸成一个数组,然后从那里开始。或者我是否应该使用更简单的功能?如果效率不是一个问题,您可以: preg_replace("/\bWa\b/","WA",$string) 使用在上停止的正则表达式,例如

有时我会在我的项目中有一个字符串,它只是一个首字母缩略词(即缩写),所有字母都需要大写

例如

这工作做得很好。但是,有时此字符串将包含首字母缩略词,该首字母缩略词也是单词的开头

例如


这显然会把“想要”这样的词变成我显然不想要的“想要”。有没有什么方法我可以只改变2或3个字符的单词?我在考虑把绳子炸成一个数组,然后从那里开始。或者我是否应该使用更简单的功能?

如果效率不是一个问题,您可以:

preg_replace("/\bWa\b/","WA",$string)
使用在上停止的正则表达式,例如:

preg_replace('/(\b)Wa(\b)/', 'WA', $string);
这会将所有出现的“Wa”替换为“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

谢谢Coddick,正是我想要的。
preg_replace('/(\b)Wa(\b)/', 'WA', $string);
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