Имя: Пароль:
IT
 
Сравнение редакций статей в базе знаний
0 Волшебник
 
модератор
04.03.05
13:32
В базе знаний kb.mista.ru появилась возможность сравнить две любые редакции статьи. Для этого нужно открыть историю редактирования статьи (например, http://kb.mista.ru/history.php?id=33), установить переключатели в нужное положение (слева - более новая версия, справа - любая из предыдущих) и нажать кнопку "Сравнить". Отличия будут подсвечены:

1. Удаленные фрагменты - красный цвет, зачеркнуто
2. Новые фрагменты - зеленый цвет, подчеркнуто.

В качестве алгоритма сравнения используется модуль diff.php,
распространяемый под лицензией GNU General Public License.
1 Asmody
 
04.03.05
13:36
посмотрел. впечатлился. молодец! и когда ты все успеваешь? >;))
2 Лошадка в пальто
 
04.03.05
13:37
(1)Клоны...
3 Волшебник
 
модератор
04.03.05
13:37
(1) Вчера до часу ночи мучился.
4 GrayT
 
04.03.05
13:38
Рульно.
А можно ссылочку на Дифф.пхп?
5 Asmody
 
04.03.05
13:39
(3) тебя наверное кто-то очень близкий скоро сильно побьет >;))
6 Волшебник
 
модератор
04.03.05
13:45
(4) Модуль diff.php входит в движок wackowiki, который можно скачать здесь http://wackowiki.com/files/wacko.r4.zip. Там он называется _diff.php

(5) Надеюсь, субботний подарок даст мне небольшую отсрочку... :)
7 Волшебник
 
модератор
04.03.05
13:48
Более простой вариант сравнения (без динамического программирования) работает быстрее, но ловит не все различия и трудно вывести итоговую картину. Тем не менее, вот он (может кому пригодится):

$entries1 = explode(" ",$text1); //если надо с точностью до предложений, "\n"
$entries2 = explode(" ",$text2);

$deleted_entries = array_diff ($entries1, $entries2);
$new_entries = array_diff($entries2, $entries1);

К сожалению, этот алгоритм не отлавливает перестановку слов местами.
8 Asmody
 
04.03.05
13:54
кста, вчера читал мануал на php.net - там еще вроде есть какой-то вариант array_diff. так и не въехал, чем они отличаются (времени пробовать не было)
9 Волшебник
 
модератор
04.03.05
13:58
(8) Там несколько аналогичных функций (array_udiff, array_diff_key), я не особо разбирался.
10 Кабан мимо пробеган
 
04.03.05
14:20
(6.2) Болеете?