Скрипт для формирования статистики

Discussion in 'PHP' started by Thanat0z, 3 Feb 2007.

  1. Thanat0z

    Thanat0z Негрин

    Joined:
    6 Dec 2006
    Messages:
    627
    Likes Received:
    498
    Reputations:
    311
    Привет, сейчас самому некогда делать, да и сделаю я коряво, так что лучше попрошу помощи здесь.

    Есть тема - https://forum.antichat.ru/thread32492.html

    В ней есть данные хеш и пароль. Вообще есть данные в текстовом файле, разделены табуляцией. Для темы надо составить статистику. Нужно

    1) Количество паролей (общее)
    2) Количество паролей с цифрами
    3) Количество паролей с спецзнаками
    4) Количество паролей с заглавными буквами
    5) Количество паролей длины n
    6) Количество паролей на кирилице
    7) Количество паролей состоящих только из букв
    8) Количесвто паролей только из цифр

    и подобное. Вообще, скрипт могу написать сам, но если укажите какие функции лучше использовать для поставленных заданий, то сэкономите мне время. Ну если кому не сложно написать и сам скриптик, я только за :)
     
    1 person likes this.
  2. je0n

    je0n Elder - Старейшина

    Joined:
    14 May 2006
    Messages:
    345
    Likes Received:
    96
    Reputations:
    41
    Короче привожу названия функций и краткое описание:
    1) $f=file('dict.txt'); echo count($f); //выведет количество строк в твоем файле

    Короче вот код с коментариями
    Code:
    <?php
    function GetPass($str) //$str - Элемент массива $f из предыдущего примера
    {
      $n=strpos($str,"\t");    //Получаем номер символа табуляции в строке
      $str=substr($str,$n+1); //Вырезаем пароль из строки
      $str=str_replace("\r\n","",$str);
      $str=str_replace("\n","",$str);
      $str=str_replace("\r","",$str);
      return $str;
    }
    
    function IsNumberInPass($pass)   //Ищет есть ли цифры в пароле
    {
      if(strpos($pass,"0")!=false)return true;
      if(strpos($pass,"1")!=false)return true;
      if(strpos($pass,"2")!=false)return true;
      if(strpos($pass,"3")!=false)return true;
      if(strpos($pass,"4")!=false)return true;
      if(strpos($pass,"5")!=false)return true;
      if(strpos($pass,"6")!=false)return true;
      if(strpos($pass,"7")!=false)return true;
      if(strpos($pass,"8")!=false)return true;
      if(strpos($pass,"9")!=false)return true;
      return false;
    }
    
    function IsSpecInPass($pass)   //Ищет есть ли спец знаки в пароле в пароле - !!!!добавь спец знаки, которые еще нужны!!!!
    {
      if(strpos($pass,"<")!=false)return true;
      if(strpos($pass,">")!=false)return true;
      if(strpos($pass,"'")!=false)return true;
      if(strpos($pass,"!")!=false)return true;
      if(strpos($pass,"@")!=false)return true;
      if(strpos($pass,"%")!=false)return true;
      if(strpos($pass,".")!=false)return true;
      if(strpos($pass,",")!=false)return true;
      if(strpos($pass,"\"")!=false)return true;
      if(strpos($pass,"/")!=false)return true;
      return false;
    }
    
    function IsBigInPass($pass)   //Ищет есть ли большие буквы в пароле - !!!!добавь остальные буквы!!!!
    {
      if(strpos($pass,"A")!=false)return true;
      if(strpos($pass,"B")!=false)return true;
      if(strpos($pass,"C")!=false)return true;
      if(strpos($pass,"D")!=false)return true;
      if(strpos($pass,"E")!=false)return true;
      if(strpos($pass,"F")!=false)return true;
      if(strpos($pass,"G")!=false)return true;
      if(strpos($pass,"H")!=false)return true;
      if(strpos($pass,"I")!=false)return true;
      if(strpos($pass,"G")!=false)return true;
      return false;
    }
    
    function GetPassWithNomber()  //Вернет количество паролей с цифрами
    {
    	$x=0;
    	$f=file('dict.txt');
    	for($i=0;$i<count($f);$i++)
    	{
    		$f[$i]=GetPass($f[$i]);
    		if(IsNumberInPass($f[$i]))$x++;
    	}
    	return $x;
    }
    
    function GetPassWithSpecSymb()  //Вернет количество паролей со спец знаками
    {
    	$x=0;
    	$f=file('dict.txt');
    	for($i=0;$i<count($f);$i++)
    	{
    		$f[$i]=GetPass($f[$i]);
    		if(IsSpecInPass($f[$i]))$x++;
    	}
    	return $x;
    }
    
    
    function GetPassWithBig()  //Вернет количество паролей с большими буквами
    {
    	$x=0;
    	$f=file('dict.txt');
    	for($i=0;$i<count($f);$i++)
    	{
    		$f[$i]=GetPass($f[$i]);
    		if(IsBigInPass($f[$i]))$x++;
    	}
    	return $x;
    }
    
    function GetPassWithLength($length)  //Вернет количество паролей длины $length
    {
    	$x=0;
    	$f=file('dict.txt');
    	for($i=0;$i<count($f);$i++)
    	{
    		$f[$i]=GetPass($f[$i]);
    		if(strlen($f[$i])==$length)$x++;
    	}
    	return $x;
    }
    ?>
    
    Мля, ну дальше писать я думаю нету смысла. Все остальное типовое! То же самое, только символы в функциях меняй и давай им другое имя. И все.
    Гарантий того, что это работает не даю. Не проверял. Но тут вроде все просто, думаю должно быть без ошибок. Если будут проблемы пиши сюда. Тебе осталось, только вставить эти функции в нужные тебе места :))
     
    #2 je0n, 3 Feb 2007
    Last edited: 3 Feb 2007
    1 person likes this.