如何将所有重复出现的字符串替换为单个字符串:
我的字符串如下:
1-string-2-string-3-string-55-otherstring-66-otherstring
我需要替换:
1-2-3-string-55-66-otherstring
我该怎么做?
答案 0 :(得分:1)
你可以这样做:
$str = '1-string-2-string-3-string-55-otherstring-66-otherstring';
print_r(implode('-', array_reverse(array_unique(array_reverse(explode('-', $str))))));
或使用正则表达式:
(\w++)-?(?=.*\b\1\b)
故障:
(\w++)
匹配并捕获一个字-?
匹配以下连字符(如果有)(?=
开始积极前瞻
.*\b\1\b
最近捕获的字词应该重复)
前瞻结束PHP代码:
echo preg_replace('~(\w++)-?(?=.*\b\1\b)~', '', $str);
答案 1 :(得分:0)
你可以使用str_word_count来获取单词和array_count值来计算每个单词在字符串中会面的时间
并在计数大于1时替换每个单词
<?php
$text = "1-string-2-string-3-string-55-otherstring-66-otherstring";
$words = str_word_count($text, 1);
$frequency = array_count_values($words);
foreach($frequency as $item=>$count) {
$item = rtrim($item,"-");
if($count >1){
$text = str_replace($item,"",$text);
}
}
echo $text;
?>