如果超过三个,PHP preg将替换字符串中的重复单词
我是PHP新手。我想用特定的重复单词替换字符串,如果三个以上的单词变成两个,如下图所示如果超过三个,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中实现这一点 提前感谢。您可以使用以下模式替换两个以上连续的相同单词,该模式使用对捕获组
$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”一词