类型分为:AAAAA AAAA AAA AABBCC AABB AAABBB AABBB AAABB ABABAB ABAB AAAAB 升序ABCD 降序DCBA我通过文本(手机号一个一行)将一组手机号导入到数据库里,需写一个算法,可以得到手机号的类型如手机号(15836998812)这样的为AABB(因为有9988是AABB型的,只要是两个相同的连在一起就可以如1133也是AABB的),15836888812,这样的就是AAAA型的,一共分为
AAAAA型的(如:15836999992,判断依据:99999)
AAAA型的(如:158365111152,判断依据:1111)
AAA型的(如:15836222712,判断依据:222)
AABBCC型的(如:15877889912,判断依据:778899)
AABB型的(如:15866779912,判断依据:6677)
AAABBB型的(如:15811122212,判断依据:111222)
AABBB型的(如:15855666212,判断依据:55666)
AAABB型的(如:15811122712,判断依据:11122)
ABABAB型的(如:15823232312,判断依据:22323)
ABAB型的(如:15836368963,判断依据:3636)
AAAAB(如:15811112569,判断依据:11112)
升序ABCD(如:158123478963,判断依据:1234)
降序DCBA(如:15843215698,判断依据:4321)
AAAAA型的(如:15836999992,判断依据:99999)
AAAA型的(如:158365111152,判断依据:1111)
AAA型的(如:15836222712,判断依据:222)
AABBCC型的(如:15877889912,判断依据:778899)
AABB型的(如:15866779912,判断依据:6677)
AAABBB型的(如:15811122212,判断依据:111222)
AABBB型的(如:15855666212,判断依据:55666)
AAABB型的(如:15811122712,判断依据:11122)
ABABAB型的(如:15823232312,判断依据:22323)
ABAB型的(如:15836368963,判断依据:3636)
AAAAB(如:15811112569,判断依据:11112)
升序ABCD(如:158123478963,判断依据:1234)
降序DCBA(如:15843215698,判断依据:4321)
暂不处理升序降序的情况
$ar = array(
'15836999992',
'158365111152',
'15836222712',
'15877889912',
'15866779912',
'15811122212',
'15855666212',
'15811122712',
'15823232312',
'15836368963',
'15811112569',
'158123478963',
'15843215698',
);
$mode = array(
'AAAAA' => '(\d)\\1{4}',
'AAAA' => '(\d)\\1{3}',
'AAA' => '(\d)\\1{2}',
'AABBCC' => '(\d)\\1(\d)\\2(\d)\\3',
'AABB' => '(\d)\\1(\d)\\2',
'AAABBB' => '(\d)\\1{2}(\d)\\2{2}',
'AABBB' => '(\d)\\1(\d)\\2{2}',
'AAABB' => '(\d)\\1{2}(\d)\\2',
'ABABAB' => '(\d)(\d)\\1\\2\\1\\2',
'ABAB' => '(\d)(\d)\\1\\2',
'AAAAB' => '(\d)\\1{3}\d',
// '升序ABCD' => '(\d)\\1{4}',
// '降序DCBA' => '(\d)\\1{4}',
);foreach($ar as $tel) {
foreach($mode as $m=>$p) {
if($tel != preg_replace_callback("/$p/", 'back', $tel)) {
$r[$tel][] = $m;
}
}
}
function back($r) {
if(count($r) == 2 && strlen($r[0]) > 2) return '';
if(count($r) == 3 && $r[1] == $r[2]-1) return '';
if(count($r) == 4 && $r[1] == $r[2]-1 && $r[1] == $r[3]-2) return '';
return $r[0];
}
print_r($r);Array
(
[15836999992] => Array
(
[0] => AAAAA
[1] => AAAA
[2] => AAA
[3] => AAAAB
) [158365111152] => Array
(
[0] => AAAA
[1] => AAA
[2] => AAAAB
) [15836222712] => Array
(
[0] => AAA
) [15877889912] => Array
(
[0] => AABBCC
[1] => AABB
) [15866779912] => Array
(
[0] => AABB
) [15811122212] => Array
(
[0] => AAA
[1] => AABB
[2] => AAABBB
[3] => AABBB
[4] => AAABB
) [15855666212] => Array
(
[0] => AAA
[1] => AABB
[2] => AABBB
) [15811122712] => Array
(
[0] => AAA
[1] => AABB
[2] => AAABB
) [15823232312] => Array
(
[0] => ABABAB
[1] => ABAB
) [15811112569] => Array
(
[0] => AAAA
[1] => AAA
[2] => AAAAB
))
'AAAAA' => '(\d)\\1{4}' 这段正则是什么意思呢