替换字符串中看起来相同的多个单词

时间:2018-01-24 12:02:30

标签: php string replace str-replace keyword

我在PHP中遇到了一些问题。

$string = "[:string] has [:int] [:string] and [:int] [:string]";

我只想修改(可能使用str_replace):

$string = "He has 5 apples and 3 bananas";

我怎么能这样做?

(Classic str_replace()将使用相同的单词修改所有[:int],
并不是我想要的。)

非常感谢...

1 个答案:

答案 0 :(得分:2)

您可以使用以下正则表达式来捕获要替换的所有组,然后迭代它。

\[:([^\]]+)\]

或者您可以使用preg_replace_callback并向其传递所需的替换功能。

$data = [...];
preg_replace_callback('/\[:([^\]]+)\]/', $str, function (&$matches) use ($data) {
    return doSomethingWithMatches..
});