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

发布于 2016-11-07 11:10:23 字数 115 浏览 1247 评论 3

$str = 'abccba 9872223s 12121212 ddd 1234560 vbwwc asasasasas zxzx qaz';

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

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

评论(3

归属感 2017-07-06 09:20:16

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

 $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 00:23:05

 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 12:24:25

<?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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文