PHP-php 通过preg_replace去除重复的字符串

意见反馈 意见反馈 主题:991 回复:2082

PHP-php 通过preg_replace去除重复的字符串

浮生未歇 发布于 2016-11-07 字数 115 浏览 1032 回复 3
$str = 'abccba 9872223s 12121212 ddd 1234560 vbwwc asasasasas zxzx qaz';

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

支持 Markdown 语法,需要帮助?

评论(3

归属感 2017-07-06 3 楼

用正则还真不知道怎么写,但用循环我给写了个

 $str = 'abccba 9872223s 12121212 ddd 1234560 vbwwc asasasasas zxzx qaz';
$source_array = explode(" ", $str);
foreach($source_array as $key=>$item){
$current_str = str_split($item, 1);
$current_array=array_count_values($current_str);
foreach ($current_array as $k => $it){
if($it>=3)
unset($source_array[$key]);
}
}
var_dump($source_array);

归属感 2017-05-23 2 楼

 echo preg_replace("/([^s]+)\1{2,}([^s]+)/",'',$string);

其他方法:
如果能使用 preg_replace_callback() 就更简单了,不过 preg_replace() 可以使用e修饰符来实现PREG_REPLACE_EVAL,能达到差不多的效果。
如:

  echo preg_replace('/([^s]+)/e','check("\1")',$string);
function check($str) {
$tmp=count_chars($str,1);
sort($tmp);
return array_pop($tmp)>2?"":$str;
}

虐人心 2017-05-11 1 楼

<?php
$string = 'abccba 9872223s 12121212 ddd 1234560 vbwwc asasasasas zxzx qaz';
$pattern = '~([a-z0-9])([a-z0-9]+)2{2,}([a-z0-9])~u';
echo preg_replace($pattern, '', $string);
//abccba 1234560 vbwwc zxzx qaz