将文本追加并添加到字符串中

时间:2012-04-27 15:25:11

标签: php regex string

我希望能够在字符串中搜索某个单词,并将字符附加并添加到该单词的每个实例中。

示例:

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 );

但我必须两次写“猫”。 我想要一种只需要我写一次的方法。

3 个答案:

答案 0 :(得分:8)

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

preg_replace documentation

转述
  

替换字符串可能包含$n形式的引用。每个这样的引用将被第n个带括号的模式捕获的文本替换。 $0指的是整个模式匹配的文本。

答案 1 :(得分:6)

使用带有反向引用的preg_replace()http://php.net/manual/en/function.preg-replace.php

preg_replace("/cats/smi","($0)",$string);

答案 2 :(得分:1)

您评论道:

  

我有一个巨大的纯文本列表,我需要括号,我   想要更容易编写代码。

由于您将要进行多次替换(昂贵的cpu),并且您只想缩短编码时间,为什么不通过包装str_replace()来节省CPU?

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

根据PHP manual

  

如果你不需要花哨的替换规则(比如正则表达式),   你应该总是使用[str_replace()]而不是preg_replace()。