正则表达式循环替换不同字符串的关键字(PHP)

Regex replace keyword with different string by loop (PHP)

假设我有一个字符串

$content = "hello . wow . cool . yes!";

将点替换为另一个字符串很容易:

echo preg_replace("/\./", "<img>", $content);

所以输出是:

hello <img> wow <img> cool <img> yes!

但是,有没有办法一一替换呢?

例如,我有一个数组,想将它们插入到字符串中。

$arr = ['<img src="a"/>', '<img src="b"/>', '<img src="c"/>'];

预期输出:

hello <img src="a"/> wow <img src="b"/> cool <img src="c"/> yes!

我可以使用 preg_match_all 来获取分隔符,但仍然不知道如何分别替换它。

感谢您的帮助。

使用preg_replace_callback。将当前句号的编号存储在静态变量中。使用 use () 从回调中访问 $arr。如果 $arr.

中没有足够的项目,请使用模数
<?php
$content = 'hello . wow . cool . yes!';
$arr = ['<img src="a"/>', '<img src="b"/>', '<img src="c"/>'];
$content = preg_replace_callback ('/\./', function ($_) use ($arr) {
    static $count = 0;
    return $arr [$count++ % count ($arr)];
}, $content);
echo ($content);

http://sandbox.onlinephpfunctions.com/code/f9115bdb6eb17e30012d987ed1fc4b95e7c10d33.