3

文字列内の特定の単語を検索し、その単語のすべてのインスタンスに文字を追加および追加できるようにしたい。

例:

I like cats, cats are awesome! I wish I had cats!

になります:

I like (cats), (cats) are awesome! I wish I had (cats)!

私は私が使うことができることを知っています

str_replace( 'cats', '(cats)', $string );

しかし、私は「猫」を2回書かなければならないでしょう。一度だけ書くだけのメソッドが欲しいです。

4

3 に答える 3

8
$search = 'cats';
preg_replace('/' . preg_quote($search, '/') . '/', '($0)', $string);

preg_replaceドキュメントからの言い換え:

置換文字列には、形式の参照が含まれる場合があります$n。そのような参照はすべて、n 番目の括弧で囲まれたパターンによってキャプチャされたテキストに置き換えられます。$0パターン全体に一致するテキストを参照します。

于 2012-04-27T15:27:54.107 に答える
6

preg_replace()後方参照でa を使用: http://php.net/manual/en/function.preg-replace.php

preg_replace("/cats/smi","($0)",$string);
于 2012-04-27T15:28:44.810 に答える
1

あなたのコメント:

括弧で囲む必要があるプレーン テキストの値のリストが膨大にあるため、コードを簡単に記述できるようにしたいと考えていました。

多くの交換を行う予定で (CPU に関しては高価です)、単純にコーディング時間を短縮したいので、ラップして CPU を節約してみませんstr_replace()か?

function str_wrap($needle,$prefix,$suffix,$haystack) {
    return str_replace($needle, $prefix . $needle . $suffix, $haystack);
}

PHPマニュアルごと:

(正規表現のような) 派手な置換規則が必要ない場合は、常に preg_replace() の代わりに [str_replace()] を使用する必要があります。

于 2012-04-27T16:03:17.997 に答える