Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как сравнить файлы на идентичность
 
 автор: Nexus   (06.01.2007 в 09:41)   письмо автору
 
 

Извините может я не прав......, но наверняка в РНР есть такая функция, или возможность:
допустим есть файл № 1, как его сравнить с другими файлами из этого же каталога, но не по названию, а по "содержанию" файла. Что б избежать повторений ?
P.S.извините если что не так, но поиск результатов не дал.

   
 
 автор: ddhvvn   (06.01.2007 в 10:22)   письмо автору
 
   для: Nexus   (06.01.2007 в 09:41)
 

Я тоже точно не знаю, но примерно так

<?php
  $file1 
file_get_contents("file1.txt");
  
$file2 file_get_contents("file2.txt");

  if (
$file1 != $file2) echo "файлы не равны";
?>

   
 
 автор: /|\';..;'/|\   (06.01.2007 в 11:40)   письмо автору
 
   для: Nexus   (06.01.2007 в 09:41)
 

Сравнивайте хеши, полученные функцией md5_file().

   
 
 автор: Nexus   (06.01.2007 в 21:13)   письмо автору
 
   для: /|\';..;'/|\   (06.01.2007 в 11:40)
 

А может кто скрипт простенький написать что б указанный файл проверить на схожесть с файлами из указанного каталога ? А то я РНР пока совсем не знаю. Помогите плиз.

   
 
 автор: Евгений Петров   (06.01.2007 в 22:53)   письмо автору
 
   для: Nexus   (06.01.2007 в 21:13)
 

<?
    define
('FILE''data.dat');
    
define('DIR''.');

    function 
FindFile($dirname$hash)
    {
        
$dir opendir($dirname);
        while(
$file readdir($dir))
        {
            if(
$file == "." || $file == "..")
                continue;
            if(
is_dir($dirname."/".$file))
            {
                
FindFile($dirname."/".$file$hash);
            }
            elseif(
md5_file($dirname."/".$file) == $hash)
                echo 
$dirname."/".$file."\n";
        }
    }

    echo 
"<pre>";
    
FindFile(DIRmd5_file(FILE));
    echo 
"</pre>";
?>

   
 
 автор: Nexus   (06.01.2007 в 22:59)   письмо автору
 
   для: Евгений Петров   (06.01.2007 в 22:53)
 

Эээээ.... а нельзя ли комментарии вставить в скрипт где название файла подставлять, а где название директории (и как это правильно сделать), а то я накуралешу счас :(

   
 
 автор: Евгений Петров   (06.01.2007 в 23:01)   письмо автору
 
   для: Nexus   (06.01.2007 в 22:59)
 

Первые 2 строчки :)
define('FILE', 'data.dat');

вместо data.dat - то что ищем (можно относительный путь, можно абсолютный)
define('DIR', '.');

вместо точки - где ищем. Точка значит ищем в текущей директории.

   
 
 автор: Nexus   (06.01.2007 в 23:08)   письмо автору
 
   для: Евгений Петров   (06.01.2007 в 23:01)
 

Спасибо, пойду пробовать.

   
 
 автор: Nexus   (07.01.2007 в 04:13)   письмо автору
 
   для: Евгений Петров   (06.01.2007 в 23:01)
 

Что-то не хочет скрипт работать с директориями. выдаёт:
Warning: md5_file(3.jpg): failed to open stream: No such file or directory in z:\home\script.ru\www\script.php on line 22
В 22 строке:

FindFile(DIR, md5_file(FILE));

Если скрипт поместить в директорию то работает без проблем.
И ещё вопрос как сделать подставления названия файла и директории через переменные ? А то каждый раз лазить в скрипт не удобно очень.

   
 
 автор: Евгений Петров   (07.01.2007 в 13:42)   письмо автору
 
   для: Nexus   (07.01.2007 в 04:13)
 

1)
define('FILE', 'data.dat');

Сюда надо писать не имя файла а путь к файлу. Имя файла только в случае если этот файл лежит в той же директории где и скрипт.
2)
define('FILE', 'data.dat'); 
define('DIR', '.');

заменить на
$f = $_GET['f'];
$d = $_GET['d'];

FindFile(DIR, md5_file(FILE));

на
FindFile($d, md5_file($f));


запускать с параметрами:
?f=имя_файла&d=имя_папки

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования