Разница в символьных строках в PHP

Короче говоря, я ищу что-то вроде google-diff-match-patch в PHP.

Я просмотрел некоторые похожие вопросы в SO, а также предоставленный алгоритм здесь, но все они терпят неудачу:

diff("draßen", "da draußen")

не должен давать

<del>draßen</del> <ins>da draußen</ins> 

(что довольно глупо для моей цели, потому что я хочу сравнивать имена файлов), но (попробуйте здесь)

<ins>da </ins>dra<ins>u</ins>ßen

Есть ли фрагмент кода в PHP, который делает это? К сожалению, я не могу использовать (т.е. устанавливать) внешние пакеты.


person fuenfundachtzig    schedule 22.07.2010    source источник
comment
Не уверен, что это то, что вам нужно/нужно, но взгляните на эту функцию PHP: php.net/manual/en/function.similar-text.php. Там также есть алгоритм Левенштейна, см. Также.   -  person Francisc    schedule 22.07.2010
comment
Вы можете определить пороговый процент, когда проверка «в слове» отличается от similar_text(). У меня нет времени, чтобы разработать пример a.t.m. хоть.   -  person Wrikken    schedule 22.07.2010
comment
В Документации по API на странице кода Google вы ссылка на есть упоминание о частичной реализации PHP - хотя это еще не часть репозитория.   -  person MrWhite    schedule 22.07.2010
comment
@Francisc: Нет, это не так, но на самом деле я использую именно эту функцию, чтобы выбирать имена файлов, похожие на заданное. Теперь хочу выделить отличия...   -  person fuenfundachtzig    schedule 22.07.2010


Ответы (4)


https://github.com/gorhill/PHP-FineDiff поддерживает посимвольные различия и может отображать различия в HTML

person R. Hill    schedule 26.02.2011

Пакет PEAR Text_Diff предоставляет встроенные различия.

person Benjamin Cremer    schedule 22.07.2010
comment
Я знаю. Но я не могу установить грушевые пакеты afaik. - person fuenfundachtzig; 22.07.2010
comment
Вы можете скачать пакет Text_Diff как tgz. Таким образом, вы можете извлечь функции/алгоритмы, которые вам действительно нужны. - person Benjamin Cremer; 22.07.2010

Здесь доступна php-версия google-diff-match-patch: https://github.com/nuxodin/diff_match_patch-php

person Ali Gangji    schedule 30.01.2012

Существует порт свежей версии библиотека google-diff-match-patch. Он намного быстрее предыдущего и не имеет проблем с utf8.

person user2409582    schedule 22.05.2013