PHP « Сравнение двух текстов

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

Понятно, что коротеньким скриптом это не решается. Мне будет достаточно литературы или примеров на эту тему.

1 ответов


Начинать можно отсюда: http://en.wikipedia.org/wiki/Comparison_of_file_comparison_tools#API_.2F_Editor_Features. Большинство из инструментов поддерживает командную строку.

UPDATE
Вот тут есть для PHP http://pear.php.net/package/Text_Diff/. Пример использования: http://www.go4expert.com/forums/showthread.php?t=4189.


может diff, patch?


Если текст, думаю возможно и исходники потянет, это делается по алгоритму шынглов, работал над проектом для клонирования статей, и проверки их на сходство, если интерисует, могу посотреть и подкинуть реализацыю на php либо С# :).

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


для программных кодов несомненно diff наше все!
для обыкновенных текстов все немного сложнее, в свое время я писал библиотеку такую библиотеку на Python
вот примерно что она делала http://www.monocle.info/lex/?p=1262595354