0

ときどき、すべての文字を大文字にする必要がある単なる頭字語 (イニシャル) である文字列がプロジェクトに含まれることがあります。

例えば。

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

これでうまくいきます。ただし、この文字列には単語の始まりでもある頭字語が含まれることがあります。

例えば。

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

これにより、「want」などの単語が明らかに「WANt」に変更されますが、これは明らかに望ましくありません。2文字か3文字の単語しか変えられない方法はありますか? 文字列を配列に分解してそこから行くことを考えていました。または、私が利用すべきより簡単な機能はありますか?

4

2 に答える 2

1

効率が問題にならない場合は、次のことができます。

preg_replace("/\bWa\b/","WA",$string)
于 2012-04-19T12:05:29.603 に答える
0

単語の境界で停止する正規表現を使用します。つまり、次のようなものです。

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
于 2012-04-19T12:05:36.007 に答える