如何解决正则表达式通过循环用不同的字符串替换关键字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
。将当前句号的编号存储在静态变量中。使用$arr
从回调访问use ()
。如果$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。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。