|
|
|
| Здравствуйте ! есть такой код :
<?php
$new = "mail@mail.ru.bak";
$old = "mail@mail.ru";
$sh = fopen($old, "r") or die("File ($old) does not exist!");
$mail = fopen($new, "r") or die("File ($new) does not exist ! ");
while (!feof($mail))
{
$charsh = fgetss($sh, 100);
$charmail = fgetss($mail, 100);
if ((strcmp($charmail , $charsh )) == 0) {
$f=0;
echo "$charsh" . "$f". "\n";
}
else {
$charsh = str_replace($charsh,$charmail, $charsh);
$f=1;$char .= $charsh;
};
} ;
echo "$char" . "\n";
?>
и мне нужно, чтобы если совпадает первый файл со вторым , то ничего не делать , а если не совпадает то вывести на экран все из файла mail@mail.ru.bak - а именно те строки которые не совпадают с файлом mail@mail.ru !! а у меня такая с этим проблема - выводится только до того места , где заканчиваются строки в файле mail@mail.ru ! если файл mail@mail.ru меньше по строкам файла mail@mail.ru.bak , то выводится только до той строки где заканчиваются строки в файле mail@mail.ru !
Заранее всем спасибо кто попытается мне в этом помочь ! | |
|
|
|
|
|
|
|
для: moriline
(29.07.2006 в 12:16)
| | Сам подход является неправильным, насколько я понял суть задачи.
Если файлы небольшие, то можно вообще поступить так
<?php
$file1 = file_get_contents("mail@mail.ru");
$file2 = file_get_contents("mail@mail.ru.bak");
if(!$file1 != $file2) echo $file2;
?>
|
Если файлы большие, то в принципе достаточно сравнить их размеры (если их содержание отличается по кол-ву символов)
<?
if(filesize("mail@mail.ru") != filesize("mail@mail.ru.bak")) echo file_get_contents("mail@mail.ru.bak");
?>
|
Может что не так понял и разбор по строкам является обязательным | |
|
|
|
|
|
|
|
для: Ziq
(29.07.2006 в 13:05)
| | вычислить md5 обеих файлов и сравнить полученные хеши. | |
|
|
|
|
|
|
|
для: RV
(29.07.2006 в 15:13)
| | Здесь требуется выводить несовпадающие строки, так что справиться можно только при построчном сравнении. | |
|
|
|
|
|
|
|
для: Holsten Bier
(29.07.2006 в 15:23)
| | справится можно двумя функциями
file()
array_diff_assoc() | |
|
|
|
|
|
|
|
для: RV
(29.07.2006 в 15:42)
| | а нельзя ли поподробнее с функцией array_diff_assoc ???
скорее всего это оно и есть ! и как было сказано выше " нужно именно по строкам найти расхождение и там где это расхождение есть заменить строки в файле mail@mail.ru на строки из файла mail@mail.ru.bak ! может подскажешь как это изящнее сделать ? | |
|
|
|
|
|
|
|
для: moriline
(29.07.2006 в 23:33)
| | там в мануале все неплохо расписано. даже по русски.
вместо array_diff_assoc надо array_diff | |
|
|
|
|
|
|
|
для: RV
(30.07.2006 в 05:20)
| | Да прочитал я все про эти функции ! но мне кажется что лучше использовать функцию array_diff_assoc !!! Вот код который работает !!!
<?php
$access1 = "mail@mail.ru.bak";
$array1 = @file($access1);
$access2 = "mail@mail.ru";
$array2 = @file($access2);
$result = array_diff_assoc($array1, $array2);
$x=0;
while ($x < sizeof($result))
{
echo "$result[$x]" . "\n";
$x++;
}
?>
И все выводит на экран и все прекрасно ! Спасибо за подсказку ! хотя я надеялся что помогут кодом а не подсказкой ! Всего всем хорошего и еще раз спасибо всем кто думал и старался ! Тема закрыта . | |
|
|
|