Пример желаемого результата:
Код: Выделить всё
{
"chunks": [
{"text": "Known as the “King of Pop,” Michael Jackson was a "},
{"text": "bet-selling", "edit": "best-selling"},
{"text": " American singer, songwriter, and dancer. As a child, Jackson "},
{"text": "becamv", "edit": "became"},
{"text": " the lead singer of his family’s popular Motown group, the Jackson 5. H..."}
]
}
Код: Выделить всё
$text1 = "Known as the “King of Pop,” Michael Jackson was a bet-selling American singer, songwriter, and dancer. As a child, Jackson becamv the lead singer of his family’s popular Motown group, the Jackson 5. H...";
$text2 = "Known as the “King of Pop,” Michael Jackson was a best-selling American singer, songwriter, and dancer. As a child, Jackson became the lead singer of his family’s popular Motown group, the Jackson 5. H...";
- Библиотека Jfcherng\Diff (https: //github.com/jfcherng/php-diff):
Я попробовал использовать библиотеку Jfcherng\Diff с пользовательским рендерингом для достижения желаемого результата. Однако он не обрабатывал неизмененные фрагменты текста должным образом и не разделял изменения на уровне слов должным образом. - Unix diff через Shell_exec:
Попытка использовать Unix diff через Shell_exec, чтобы сгенерировать различия и проанализировать выходные данные. Результаты были не в ожидаемом формате и включали дополнительные метаданные, не относящиеся к нашему варианту использования. - Разделение текста вручную:
Проверено вручную разбивать тексты на слова и сравнивать их, но такому подходу не хватало эффективности и точности.
Вот текущая реализация с использованием библиотеки Jfcherng\Diff:
Код: Выделить всё
Подробнее здесь: [url]https://stackoverflow.com/questions/78478737/php-text-comparison-library-that-returns-json-with-original-and-edited-text-chun[/url]