为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 substr_replace 在字符串的多个位置替换或插入字符

如何使用 substr_replace 在字符串的多个位置替换或插入字符

PHP
慕尼黑8549860 2023-08-06 15:38:47
正如标题所说我想在字符串中插入或替换逗号 (,)。我有这个字符串:A 适合 B 适合 C 适合 D。我想在每个适合后面以及适合之前的单词之后插入逗号。这是期望的结果:A, fits B, Fits C, Fits D我用来实现这一目标的代码是:$newstr = substr_replace($oldstr,", ",stripos($oldstr,"fits")-1,0);但是,此代码仅在第一次出现“fits”时插入 1 个逗号。我尝试使用substr_count()来获取出现的匹配数,然后使用For loop,但逗号堆叠在第一次出现匹配的位置。像这样 :A,,, Fits B Fits C Fits D一定有一种方法可以达到预期的结果,它必须在substr_replace()功能中添加多个位置或者其他什么,对吗?编辑我的字符串是White Fits Black Fits Red Fits Blue 期望的结果是White, Fits Black, Fits Red, Fits Blue逗号,放在Fits字符串中每个单词的后面并且紧接在后面的单词之后fits我的问题的关键点是:如何在每个fits单词后面以及后面的单词后面加上逗号fits之前谢谢
查看完整描述

1 回答

?
呼如林

TA贡献1798条经验 获得超3个赞

用途preg_replace:


$input = "A fits B Fits C Fits D";

$output = preg_replace("/\b([A-Z]+)(?=\s)/", "$1,", $input);

echo $input . "\n" . $output;

这打印:


A fits B Fits C Fits D

A, fits B, Fits C, Fits D

这是正则表达式模式的解释:


\b([AZ]+) 匹配并捕获一个或多个大写字母,其前面是单词边界 (?=\s),然后断言后面是空格;如果输入以字母结尾,这可以防止为最后一个字母分配逗号


$1然后,我们将捕获的字母替换为,后跟逗号。


编辑:


对于您最近的编辑,您可以使用:


$input = "White Fits Black Fits Red Fits Blue";

$output = preg_replace("/\b(?=\s+Fits\b)/", ",", $input);

echo $input . "\n" . $output;

这打印:


White Fits Black Fits Red Fits Blue

White, Fits Black, Fits Red, Fits Blue


查看完整回答
反对 回复 2023-08-06
  • 1 回答
  • 0 关注
  • 86 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信