Мне нужно сравнить два текста и вернуть различия в формате JSON. JSON должен содержать фрагменты неизмененного текста, а также фрагменты исходного и отредактированного текста. Вот пример входных данных и желаемого результата: Пример желаемого результата:
{
"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:
Мне нужно сравнить два текста и вернуть различия в формате JSON. JSON должен содержать фрагменты неизмененного текста, а также фрагменты исходного и отредактированного текста. Вот пример входных данных и желаемого результата: [b]Пример желаемого результата:[/b] [code]{ "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..."} ] } [/code] [b]Два текста:[/b] [code]$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..."; [/code] [b]Что я пробовал[/b] [list] [*]Библиотека Jfcherng\Diff (https: //github.com/jfcherng/php-diff): Я попробовал использовать библиотеку Jfcherng\Diff с пользовательским рендерингом для достижения желаемого результата. Однако он не обрабатывал неизмененные фрагменты текста должным образом и не разделял изменения на уровне слов должным образом.
[*]Unix diff через Shell_exec: Попытка использовать Unix diff через Shell_exec, чтобы сгенерировать различия и проанализировать выходные данные. Результаты были не в ожидаемом формате и включали дополнительные метаданные, не относящиеся к нашему варианту использования.
[*]Разделение текста вручную: Проверено вручную разбивать тексты на слова и сравнивать их, но такому подходу не хватало эффективности и точности.
[/list] [b]Текущая реализация кода [/b] Вот текущая реализация с использованием библиотеки Jfcherng\Diff: [code]