Вычислить разницу текста в PHP

Существуют ли какие-либо библиотеки (сторонние или встроенные) в PHP для расчета различий текста?

Ответ 1

Какие отличия? Файл отличается? Существует array_diff(), который действует на массивы. Тогда есть также xdiff, который "позволяет создавать и применять файлы исправлений, содержащие различия между различными версиями файлов". Последний действует на файлы или строки.

Изменить: я должен добавить, что xdiff пока не отображается в релизе. Вы должны строить из источника, чтобы использовать его.

Ответ 2

Существует красивый и крошечный проект Simplediff на Github, который создает текстовые и HTML-различия.

Ответ 3

это зависит именно от того, что вы имеете в виду и что хотите, но есть

PEAR Text_Diff - Механизм выполнения и рендеринга текста diff

Ответ 4

Выход this находится в формате GNU diff. Возможно, это то, что вы ищете.

Ответ 5

Это зависит от того, какой результат вы хотите. Если все, что вы хотите сделать, это получить файлы diff для двух наборов текста, вам может быть проще просто использовать внешнюю команду diff (которая, конечно же, полностью зависит от среды, для которой вы разрабатываете).

$diff = `diff $file1 $file2`;

Оттуда, если вы хотите использовать информацию о различиях вообще, вам нужно будет анализировать, и это решение может и не быть тем, что вам нужно. В этом случае я бы предложил посмотреть библиотеку PEAR, упомянутую выше, или найти аналогичную библиотеку синтаксического анализа текста.

Ответ 6

Механизм MediaWiki diff является открытым исходным кодом (как и остальная часть). Если вам нравится, как Wikipedia обрабатывает разницу между текстами, это может быть для вас решением.

Ответ 7

Мне очень нравится этот JavaScript, основанный на веб-проектах.

jsdifflib

Ответ 8

Не встраивайся, но мне это нравится, потому что у него такой приятный интерфейс, чтобы проверять все на веб-сайте, и потому что он кажется несколько быстрее, чем Text_Diff на высоких уровнях детализации.

http://www.raymondhill.net/finediff/viewdiff-ex.php