正则表达式循环替换不同字符串的关键字(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.
假设我有一个字符串
$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.