如果超过三个,PHP preg将替换字符串中的重复单词

如果超过三个,PHP preg将替换字符串中的重复单词,php,string,duplicates,preg-replace,word,Php,String,Duplicates,Preg Replace,Word,我是PHP新手。我想用特定的重复单词替换字符串,如果三个以上的单词变成两个,如下图所示 $wordToCheck = "abc"; $string = "abc abc abc abc Hello World abc abc abc My name is abc" 结果将是: $outString = "abc abc Hello World abc abc My name is abc" 如何在PHP中实现这一点 提前感谢。您可以使用以下模式替换两个以上连续的相同单词,该模式使用对捕获组

我是PHP新手。我想用特定的重复单词替换字符串,如果三个以上的单词变成两个,如下图所示

$wordToCheck = "abc";
$string = "abc abc abc abc Hello World abc abc abc My name is abc" 
结果将是:

$outString = "abc abc Hello World abc abc My name is abc"
如何在PHP中实现这一点


提前感谢。

您可以使用以下模式替换两个以上连续的相同单词,该模式使用对捕获组1的反向引用(即
\1
):

请注意,由于
\K
从匹配结果中删除了左侧已匹配的所有内容,因此不会替换前两次出现的内容


您可以使用以下模式替换2个以上连续的相同单词,该模式使用对捕获组1的反向引用(即
\1
):

请注意,由于
\K
从匹配结果中删除了左侧已匹配的所有内容,因此不会替换前两次出现的内容


您可以像这样使用PHP的explode:
$wordArray=explode(“,$string)

$wordArray现在将为原始字符串中的每个空格分隔的单词包含一个元素

你可以这样说:

$i = 0;
while ($wordArray[$i] == $wordToCheck) {
    $i++;
}
此时,$wordToCheck出现在字符串开头的次数是多少。在这之后,PHP的
array\u shift
将从数组前面移除元素,并且在移出足够多的单词以只留下两个单词之后,
内爆
函数将把数组变回字符串

编辑添加:我没有使用正则表达式;我不知道该怎么做,我相信你也不需要这么做

再次编辑:已测试,即使字符串的第一个“单词”不是$wordToCheck:

<?php
$wordToCheck = "abc";
$string = "abc abc abc abc Hello World abc abc abc My name is abc";
$wordArray = explode ( " ", $string);
$i = 0;
while ($wordArray[$i] == $wordToCheck) {
    $i++;
}
for ($j=0; $j < $i-2; $j++) {
   array_shift($wordArray);
}
$string = implode(" ",$wordArray);
echo $string;
?>

您可以像这样使用PHP的explode:
$wordArray=explode(“,$string)

$wordArray现在将为原始字符串中的每个空格分隔的单词包含一个元素

你可以这样说:

$i = 0;
while ($wordArray[$i] == $wordToCheck) {
    $i++;
}
此时,$wordToCheck出现在字符串开头的次数是多少。在这之后,PHP的
array\u shift
将从数组前面移除元素,并且在移出足够多的单词以只留下两个单词之后,
内爆
函数将把数组变回字符串

编辑添加:我没有使用正则表达式;我不知道该怎么做,我相信你也不需要这么做

再次编辑:已测试,即使字符串的第一个“单词”不是$wordToCheck:

<?php
$wordToCheck = "abc";
$string = "abc abc abc abc Hello World abc abc abc My name is abc";
$wordArray = explode ( " ", $string);
$i = 0;
while ($wordArray[$i] == $wordToCheck) {
    $i++;
}
for ($j=0; $j < $i-2; $j++) {
   array_shift($wordArray);
}
$string = implode(" ",$wordArray);
echo $string;
?>


+1这是一个很好的方法,与我的方法没有区别,但它只适用于“abc”一词+1这是一个很好的方法,与我的方法没有区别,但它只适用于“abc”一词