Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Тексты > Сравнение двух версий HTML-кода


Автор: dm9 28.7.2008, 16:41
Задача: сравнить два текста, набранных через визуальный редактор, и подсветить разницу. Детали не суть важны -- главное, чтобы сравнивал тексты и внятно выдавал, что нового.

Интересуют готовые решения -- сам написать могу, но некогда smile Подскажете?

Сразу насчёт Wiki-движков: важно сравнение именно HTML-я, а не Вики-разметки (не по идеологическим причинам -- просто моим пользователям смертельно нужна вставка из Ворда). Если знаете открытые движки, из которых такое можно выдрать, напишите, пожалуйста.

Автор: Mal Hack 28.7.2008, 16:53
Проще, как мне кажется воспользоваться утилитой diff ОС.

http://pear.php.net/package/Text_Diff/redirected
http://www.hawkee.com/snippet/2238/
http://www.zend.com//code/codex.php?ozid=1381&single=1

Можешь еще тут посмотреть: http://www.phpclasses.org/

Автор: dm9 28.7.2008, 22:06
То есть приводить HTML к тексту и затем сравнивать. Видимо, так и буду делать. Скорее всего использую pear, чтобы под Windows тоже работало - так тестировать проще.

Спасибо, Mal Hack smile

Но всё же вакантное место для сравнения именно HTML пока открыто smile

Автор: sTa1kEr 28.7.2008, 22:07
Цитата(Mal Hack @  28.7.2008,  17:53 Найти цитируемый пост)
Проще, как мне кажется воспользоваться утилитой diff ОС.
Полностью согласен - луше использовать готовые и проверенные системные средства, чем изобретать новые велосипеды на PHP.
Так же можно воспользоваться экстеншеном http://php.net/xdiff

Добавлено через 2 минуты и 46 секунд
Цитата(dm9 @  28.7.2008,  23:06 Найти цитируемый пост)
То есть приводить HTML к тексту и затем сравнивать.

Цитата(dm9 @  28.7.2008,  23:06 Найти цитируемый пост)
Но всё же вакантное место для сравнения именно HTML пока открыто

А в чем сравнение HTML должно отличается от сравнения plain text?

Автор: Mal Hack 28.7.2008, 22:28
dm9, а что тебе мешает тже самое с html сделать? У тебя редактор какой, text/plain или WYSWIG?
На входе формат данных какой?

Автор: dm9 29.7.2008, 09:34
На входе WYSWIG. Проблема в том, что diff обнаружит разницу между <b>text</b> и <i>text</i>, а текущие версии сравнения текста такие вещи подсвечивать не умеют. Как можно было бы ("идеал").
1. Не заставлять меня самого чистить HTML и преврашать его в text/plain (могла бы и библиотека делать =)).
2. Можно было бы оставлять конечный HTML в выдаче результатов, подсвечивая разность именно контента (а не оформления), но тем не менее не лишаясь совершенно оформительских прелестей при просмотре диффа.

Добавлено через 3 минуты и 5 секунд
Цитата(sTa1kEr @  28.7.2008,  23:07 Найти цитируемый пост)
А в чем сравнение HTML должно отличается от сравнения plain text?


Собственно, форматом выдачи результата диффа конечному пользователю (который, надо учесть, не знает HTML и слова "тег" не слышал).

Добавлено через 6 минут и 24 секунды
Цитата(sTa1kEr @  28.7.2008,  23:07 Найти цитируемый пост)
Так же можно воспользоваться экстеншеном xdiff


Спасибо, посмотрел. К сожалению, тоже только под nix. Мне просто хочется оставить 100% работоспособности под Windows, так отлаживать проект проще.

Автор: Anarki 14.8.2008, 01:56
Попробуйте вот это http://www.horde.org/download/app/?app=horde, в фреймворк включен модуль Text_Diff (lib/Text/Diff.php), который поддерживает несколько "движков" для diff'a в том числе и xdiff, diff и нативного(целиком на php)

Добавлено через 51 секунду
Его чуть переделанная версия идет в http://wordpress.org

Добавлено через 3 минуты и 42 секунды
diff есть под винду консольный тут http://sourceforge.net/projects/unxutils/

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)