PDA

Просмотр полной версии : Напишите скрипт отбора номеров по критериям


_Spamer_
31.05.2009, 16:51
Надо что б скрипт с текстового файла вида
19589073
11306657
16150100
2515407
24919724
23897603
8524608

Выбирал номера с масками x , xy, xyz, xyza, xyzab .... Как icq номера)

Mixon
31.05.2009, 17:13
а минимальная и максимальная величина чисел?

KATYA
31.05.2009, 17:13
А программой ICQSafeBook не пробовал?

_Spamer_
31.05.2009, 17:15
Минимум 2-х значное число, максимум - 10-ти значное

Safebook не катит

Mixon
31.05.2009, 17:15
KATYA,впринципе может ты и права,но вопщет человек написал в розделе PHP, PERL, MySQL, JavaScript.,наверное же не просто так...

KATYA
31.05.2009, 17:34
<?
function uin_beautiful($uin) {
if(is_numeric($uin)) {
$length=strlen($uin);
if($length>=5 && $length<=9) {
$buf=substr($uin,0,1);
for($i=1;$i<$length;$i++) {
$simvol=substr($uin,$i,1);
if(!preg_match("/$simvol/",$buf)) {
$buf.=$simvol;
}
}
$buf_length=strlen($buf);
switch($buf_length) {
case 1:
return 'x';
break;
case 2:
return 'xy';
break;
case 3:
return 'xyz';
break;
case 4:
return 'xyza';
break;
default:
return 'ХЗ';
break;
}
}
else return 'Неверная длинна uin-а';
}
else return 'Введите верный uin';
}
?>

Mixon
31.05.2009, 17:47
Вот написал такое:


<?php
$result=file_get_contents('uins.txt');
for ($bezk=0; $bezk>-1; $bezk++){
$vid="0";
$abc="";
$ex=explode("\r\n", $result);
$num=$ex[$bezk];
if($num==""){exit;}
$vid="0";
for ($i=0; $i<10; $i++){
if (preg_match("/$i/",$num)){
$vid=$vid+1;
$abc.=$vid;
}
}
$abc=str_replace("1","x",$abc);
$abc=str_replace("2","y",$abc);
$abc=str_replace("3","z",$abc);
$abc=str_replace("4","a",$abc);
$abc=str_replace("5","b",$abc);
$abc=str_replace("6","c",$abc);
$abc=str_replace("7","d",$abc);
$abc=str_replace("8","e",$abc);
$abc=str_replace("9","f",$abc);
$abc=str_replace("0","g",$abc);
echo $num." - ".$abc."<br>";
}
?>

d_x
31.05.2009, 18:33
<?php
$nums=Array(
19589073,
11306657,
16150100,
2515407,
24919724,
23897603,
8524608,
);

$numtype=Array(1=>'x',2=>'xy',3=>'xyz',4=>'xyza',5=>'xyzab',6=>'xyzabc',7=>'xyzabcd',8=>'xyzabcde',9=>'xyzabcdef',10=>'xyzabcdefg');

foreach($nums as $num)
{
$used=Array();

for($i=0,$num=$num.'',$cnt=strlen($num);$i<$cnt;$i++)
if(!in_array($num{$i},$used))
$used[]=$num{$i};

print 'NUM: '.$num.' - '.$numtype[count($used)].'<br>';
}

?>


NUM: 19589073 - xyzabcd
NUM: 11306657 - xyzabc
NUM: 16150100 - xyza
NUM: 2515407 - xyzabc
NUM: 24919724 - xyzab
NUM: 23897603 - xyzabcd
NUM: 8524608 - xyzabc



А вот с возможностью выбора нужных:
<?php
$nums=Array(
19589073,
11306657,
16150100,
2515407,
24919724,
23897603,
8524608,
);

$numtype=Array(1=>'x',2=>'xy',3=>'xyz',4=>'xyza',5=>'xyzab',6=>'xyzabc',7=>'xyzabcd',8=>'xyzabcde',9=>'xyzabcdef',10=>'xyzabcdefg');

$mintype=1; //выбираем все от x
$maxtype=4; //до xyza

foreach($nums as $num)
{
$used=Array();

for($i=0,$num=$num.'',$cnt=strlen($num);$i<$cnt;$i++)
if(!in_array($num{$i},$used))
$used[]=$num{$i};

if(($tp=count($used))>=$mintype && $tp<=$maxtype) print 'NUM: '.$num.' - '.$numtype[$tp].'<br>';
}

?>

Выведет только один подходящий по критериям:
NUM: 16150100 - xyza

_Spamer_
31.05.2009, 19:42
Всем спс:)