PHP-php 通过preg_replace去除重复的字符串
$str = 'abccba 9872223s 12121212 ddd 1234560 vbwwc asasasasas zxzx qaz';
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
$str = 'abccba 9872223s 12121212 ddd 1234560 vbwwc asasasasas zxzx qaz';
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(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);
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;
}
<?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