ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #10121  
Старый 17.04.2009, 11:53
Аватар для Pashkela
Pashkela
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме:
9220514

Репутация: 3338


Отправить сообщение для Pashkela с помощью ICQ
По умолчанию

Тогда лучше пример такого файла ТОЧНЫЙ (или сказать, что точно так, как в вопросе, только хост заменен) + идут ли такие вот записи подряд или нет (одна под другой, или может быть случайное расположение)

PHP код:
<pre>
<?php
$str1 
"site.com/?id=1&page=end";
$str2 "site.com/?id=2&page=end";
$var1 similar_text($str1$str2, &$tmp);
echo 
"Совпадение в процентах: $tmp\n"// примерно 95%, 
//значит практически идентичны, для нас по условиям., идентичны

//Если отличие больше - значит у нас новая ссылка:
$str1 "site.com/?id=1&page=end";
$str2 "site.com/?pp=1&page=main&sort=1";
$var1 similar_text($str1$str2, &$tmp);
echo 
"Совпадение в процентах: $tmp\n"// примерно 70% 
//разница большая, новая уникальная ссылка (по условиям)
?>
</pre>
но в данном случае лучше всего подойдет функция Левенштейна, которая просто показывает, сколько символов надо заменить, чтобы из первой строки получить вторую, т.е. если возвращает 1 - строки АБСОЛЮТНО ИДЕНТИЧНЫ по условию задачи:

PHP код:
<?php
$str1 
"site.com/?id=1&page=end";
$str2 "site.com/?id=2&page=end";
$var levenshtein($str1,$str2);
echo(
$var); // вернет 1
?>
</pre>
если строки идут не подряд такого рода, а в разброс - то файл в массив и предварительная сортировка, потом обычное построчное чтение с помощью fgets() и сравнению по Левенштейну

т.е. по задаче конкретно примерно так выглядеть будет по идее:

PHP код:
<pre>
<pre>
<?php

$file 
'tema1.txt'// Файл с ссылками
$res 'tema10.txt'// Результирующий файл

// функция для сравнения по Левенштейну
function lev($str1,$str2) {
 
$a levenshtein($str1,$str2);
 if (
$a!=1) return true;
 return 
false
}

// Соритруем файл с сылками
$sort file($file);
sort($sort);
file_put_contents($file,$sort);
// Начинаем отбирать "уникальные" ссылки
$hand1 fopen($res,'w');
$hand fopen($file,'r');
while(!
feof($hand)) {
 
$buf1 trim(fgets($hand));
 
$buf2 trim(fgets($hand)); 
 if (
lev($buf1,$buf2)) fwrite($hand1,$buf1"\n" .$buf2 ."\r\n");
 else 
fwrite($hand1,$buf1 "\r\n");
}
fclose($hand);
fclose($hand1);
echo 
'Done';
?>
</pre>
Погонял щаз, на самом деле и этот вариант неправильный, т.к. будет работать только для ДВУХ подряд идущих ссылок)) А если их таких три и больше - не сработает. Поэтому вот ПРАВИЛЬНЫЙ вариант на любое кол-во таких ссылок:

PHP код:
<pre>
<?php

$file 
'tema1.txt'// Файл с ссылками
$res 'tema10.txt'// Результирующий файл

// функция для сравнения по Левенштейну
function lev($str1,$str2) {
 
$a levenshtein($str1,$str2);
 if (
$a==or $a==0) return false;
 return 
true
}

// А теперь сравниваем каждую строку 
//со всеми при помощи функции выше
function Ustr ($hand$str)
{
   
fseek($hand,0);
   while (!
feof ($hand)) {
      
$temp trim(fgets($hand));
      if (!
lev($str,$temp))
      return 
false;
   }
   return 
true;
}

// Сортируем файл с сылками
$sort file($file);
sort($sort);
file_put_contents($file,$sort);
// Начинаем отбирать "уникальные" ссылки
$hand1 fopen($res,'w+');
$hand fopen($file,'r');
while(!
feof($hand)) {
 
$buf trim(fgets($hand));
 if (
Ustr($hand1,$buf)) {
   
fseek ($hand10SEEK_END);
   
fwrite($hand1,$buf ."\r\n");
 }
}
fclose($hand);
fclose($hand1);
echo 
'Done';
?>
</pre>

Последний раз редактировалось Pashkela; 17.04.2009 в 13:28..
 
Ответить с цитированием

  #10122  
Старый 17.04.2009, 13:19
Аватар для Gifts
Gifts
Reservists Of Antichat - Level 6
Регистрация: 25.04.2008
Сообщений: 827
Провел на форуме:
2769640

Репутация: 1304


По умолчанию

Pashkela Вы как бы заблуждаетесь, если строки идентичны - левенштейн вернет 0. А для id=2 и id=13 левенштейн вернет 2. И ваш скрипт вообще возвращает неожиданные результаты))

Код:
Вход:
site.com/?id=1&page=end
site.com/?id=5&page=end
site.com/?id=4&page=end
site.com/?id=3&page=end
site.com/?id=2&page=end
site.com/?id=6&page=end

Выход:
site.com/?id=1&page=end
site.com/?id=3&page=end
site.com/?id=5&page=end

Последний раз редактировалось Gifts; 17.04.2009 в 13:22..
 
Ответить с цитированием

  #10123  
Старый 17.04.2009, 13:30
Аватар для Pashkela
Pashkela
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме:
9220514

Репутация: 3338


Отправить сообщение для Pashkela с помощью ICQ
По умолчанию

исправил выше в посте, когда

id=2 и id=11111

пока хз, можно ручками задать в условиях в первой функции, универсально как - хз пока, или от процентов прыгать (similar_text())

Хм, не такая уж и тривиальная задачка
 
Ответить с цитированием

  #10124  
Старый 17.04.2009, 13:37
Аватар для Gifts
Gifts
Reservists Of Antichat - Level 6
Регистрация: 25.04.2008
Сообщений: 827
Провел на форуме:
2769640

Репутация: 1304


По умолчанию

Если нужно сравнивать только окончания ссылок

Входной файл:
Код:
site.com/?id=1&page=end
site.com/?id=2&page=end
site.com/?pp=1&page=main&sort=1
site.com/?pp=2&page=main&sort=1
site.com/?dd=1&page=old
site.com/?dd=2&page=old
site.com/?dd=3&page=old
site.com/?dd=4&page=old
PHP код:
<?php
$file 
'tema1.txt';

$f file_get_contents($file)."\r\n";
preg_match_all('~^[^\?]*\?[^=]+=([^&]+)(&.+)~mi',$f,$match);
$arr=array_values(array_combine($match[2],$match[0]));
print_r($arr);
echo 
'Done';
?>
С учетом ниженаписанного SQLHACK регулярка будет такая (имхо проще и быстрее будет):
PHP код:
<?php
$file 
'tema1.txt';

$f file_get_contents($file)."\r\n";
preg_match_all('~^.*/([^=]+)=[^&]+&.+~mi',$f,$match);
$arr=array_values(array_combine($match[1],$match[0]));
print_r($arr);
echo 
'Done';
?>

Последний раз редактировалось Gifts; 17.04.2009 в 17:38..
 
Ответить с цитированием

  #10125  
Старый 17.04.2009, 13:43
Аватар для Pashkela
Pashkela
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме:
9220514

Репутация: 3338


Отправить сообщение для Pashkela с помощью ICQ
По умолчанию

Ну или вот с процентным совпадением, процент задаете сами в первой функции:

PHP код:
<pre>
<?php

$file 
'tema1.txt'// Файл с ссылками
$res 'tema10.txt'// Результирующий файл


// функция для процентного сравнения текста
function lev($str1,$str2) {
     
$a similar_text($str1$str2, &$tmp);
     if (
round($tmp,0)>=86) return false// тут 86 - 
// - процент совпадения строк, можно менять
     
return true
}


// А теперь сравниваем каждую строку со всеми при помощи функции выше
function Ustr ($hand$str)
{
   
fseek($hand,0);
   while (!
feof ($hand)) {
      
$temp trim(fgets($hand));
      if (!
lev($str,$temp))
      return 
false;
   }
   return 
true;
}

// Соритруем файл с сылками
$sort file($file);
sort($sort);
file_put_contents($file,$sort);
// Начинаем отбирать "уникальные" ссылки
$hand1 fopen($res,'w+');
$hand fopen($file,'r');
while(!
feof($hand)) {
 
$buf trim(fgets($hand));
 if (
Ustr($hand1,$buf)) {
   
fseek ($hand10SEEK_END);
   
fwrite($hand1,$buf ."\r\n");
 }
}
fclose($hand);
fclose($hand1);
echo 
'Done';
?>
</pre>

Последний раз редактировалось Pashkela; 17.04.2009 в 13:47..
 
Ответить с цитированием

  #10126  
Старый 17.04.2009, 15:57
Аватар для SQLHACK
SQLHACK
Голос разума
Регистрация: 27.09.2006
Сообщений: 529
Провел на форуме:
1607210

Репутация: 1617


Отправить сообщение для SQLHACK с помощью ICQ
По умолчанию

два с половиной часа себе мозг трахал , короче если я правильно понял, то надо было сделать так: ссылки где одинаковые параметры, но просто разные значения этим параметров, их надо было выкинуть, полезно это может быть только в парсере поисковиков, где они могут выдавать пути к одним и темже скриптам, но с разными параметрами, так вот этот скрипт делает именно это.

Ссылки пихаем в c:/2.txt ну или указываем другой файл.

то есть из такого
http://site.com/index.php?id=1&page=end
site.com/?id=2&page=end
http://site.com/?pp=1&page=main&sort=1
http://site.com/?pp=2&page=main&sort=1
http://site.com/?pp=3&page=notmain&sort=1

делает такое
http://site.com/index.php?id=1&page=end
http://site.com/?id=2&page=end
http://site.com/?pp=1&page=main&sort=1

PHP код:
<?php

$urlarr 
file("c:/2.txt");

$site = array();
//создаем массив с сылками и параметрами
foreach($urlarr as $url){
    
$url trim($url);
    if(
$url != ""){
        if(
substr($url,0,7) != "http://" && substr($url,0,8) != "https://"){
            
$url "http://".$url;
        }
        
$x parse_url($url);
        
$newurl $x['scheme']."://".$x['host'].$x['path'];
        
$params explode("&"$x['query']);
        
$pp = array();
        foreach(
$params as $param){
            
$p strpos($param"=");
            if(
$p>0){
                
$paramname strtolower(substr($param0$p));
                
$paramval  strtolower(substr($param$p 1strlen($param) - $p 1));
                if (
strlen($paramval) == 0){
                    
$paramval chr(0);
                }
            }
            
$pp[$paramname] = $paramval;
        }
        
$site[$newurl][] = $pp;
    }
}
//$siteclone = $site;

$siteclone array_map("deepvalkill"$site);
function 
deepvalkill($value){
    
$value is_array($value) ? array_map('deepvalkill'$value) : $value "";
    return 
$value;
}
//чистим одинаковые
foreach($siteclone as $key=>$st){
    for(
$z=0;$z<=count($st);$z++){
        for(
$y=$z+1;$y<=count($st);$y++){
            if(
$st[$z] == $st[$y]){
                unset(
$site[$key][$y]);
            }
        }
    }
}

foreach(
$site as $key=>$st){
    foreach(
$st as $kk=>$vv){
        
$par "";
        foreach(
$vv as $kk2=>$vv2){

            
$par .= $kk2."=".$vv2."&";
        }
        
//echo $par;
        
$url $key."?".substr($par,0,strlen($par)-1);
        
//выводим ссылки
        
echo $url."\r\n";;
    }
}


?>
__________________
Бойтесь своих желаний. Они могут исполниться....

...О-о-о-о, ушами не услышать, глазами не понять!
 
Ответить с цитированием

  #10127  
Старый 17.04.2009, 16:30
Аватар для Byrger
Byrger
Постоянный
Регистрация: 07.03.2008
Сообщений: 479
Провел на форуме:
791766

Репутация: 61
По умолчанию

Как через <input type="file" name="file"> приняв фаил
С помощью PHP залить его в нужную папку?
 
Ответить с цитированием

  #10128  
Старый 17.04.2009, 16:34
Аватар для Pashkela
Pashkela
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме:
9220514

Репутация: 3338


Отправить сообщение для Pashkela с помощью ICQ
По умолчанию

гугл сломался?

http://www.softtime.ru/scripts/upload.php
 
Ответить с цитированием

  #10129  
Старый 17.04.2009, 16:39
Аватар для heretic1990
heretic1990
Постоянный
Регистрация: 02.07.2008
Сообщений: 472
Провел на форуме:
3728999

Репутация: 444
По умолчанию

можно пример скрипта для залогинивания на сайте?
чтоб скрипт висел на сайте как бот.
 
Ответить с цитированием

  #10130  
Старый 17.04.2009, 17:59
Аватар для Byrger
Byrger
Постоянный
Регистрация: 07.03.2008
Сообщений: 479
Провел на форуме:
791766

Репутация: 61
По умолчанию

Цитата:
Сообщение от Pashkela  
гугл сломался?

http://www.softtime.ru/scripts/upload.php
PHP код:
   if($_FILES["90.jpg"]["size"] > 1024*3*1024)
   {
     echo (
"Размер файла превышает три мегабайта");
     exit;
   }
   if(
copy($_FILES["90.jpg"]["tmp_name"],
     
"c:/temp/".$_FILES["90.jpg"]["name"]))
   {
     echo(
"Файл успешно загружен <br>");
     echo(
"Характеристики файла: <br>");
     echo(
"Имя файла: ");
     echo(
$_FILES["90.jpg"]["name"]);
     echo(
"<br>Размер файла: ");
     echo(
$_FILES["90.jpg"]["size"]);
     echo(
"<br>Каталог для загрузки: ");
     echo(
$_FILES["90.jpg"]["tmp_name"]);
     echo(
"<br>Тип файла: ");
     echo(
$_FILES["90.jpg"]["type"]);
   } else {
      echo(
"Ошибка загрузки файла");
   } 
Ошибка загрузки файла
Пробовал писать полный путь
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[c/c++] Новичкам: задаем вопросы _Great_ С/С++, C#, Delphi, .NET, Asm 5420 17.06.2010 13:33
Интернетчики задали российскому президенту очень странные вопросы podkashey Мировые новости 4 07.07.2006 16:53
Вопросы по Ipb 2.0 Voodoo_People Форумы 26 15.02.2005 22:57



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ