За последние 24 часа нас посетили 20520 программистов и 1135 роботов. Сейчас ищут 808 программистов ...

Сравнение двух текстов и подстветка/выделение разницы.

Тема в разделе "PHP для новичков", создана пользователем savsoft, 19 май 2020.

  1. savsoft

    savsoft Активный пользователь

    С нами с:
    1 фев 2017
    Сообщения:
    96
    Симпатии:
    2
    Есть два текста. Второй необходимо сравнить с первым текстом. И выдать результат в виде суммарного текста, где все чего не хватает, например, отображается красным, а все лишнее - синим перечеркнутым.

    Толкните в нужном направлении. Спасибо.
     
  2. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.199
    Симпатии:
    184
    Начни с двух слов
     
  3. savsoft

    savsoft Активный пользователь

    С нами с:
    1 фев 2017
    Сообщения:
    96
    Симпатии:
    2
    С каких? Первого и второго? Первого и последнего? Любых?
     
  4. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.068
    Симпатии:
    1.231
    Адрес:
    там-сям
    Во всех операционных системах есть такая утилита diff для нахождения разницы в двух файлах. Если бы я захотел найти аналог в php, я бы погуглил "php diff". Находится вот такое, например:
    https://github.com/paulgb/simplediff/blob/master/php/simplediff.php
    Кажется функция htmlDiff() отсюда это то, что тебе надо. Будет отмечать разницу с помощью тегов <del> и <ins>. Что там выделять синим/красным, это уже задачка для CSS. Понимаешь о чём я?
     
  5. savsoft

    savsoft Активный пользователь

    С нами с:
    1 фев 2017
    Сообщения:
    96
    Симпатии:
    2
    Да, понятно. Пока попробовал diff.js. Для одной моей задачи вполне подходит. А вот для второй нет. Завтра попробую htmlDiff(). Спасибо за подсказку.
     
  6. savsoft

    savsoft Активный пользователь

    С нами с:
    1 фев 2017
    Сообщения:
    96
    Симпатии:
    2
    Все работает. Только смущает, что скрипту много лет. Не будет проблем в будущем?

    P.S. Сменил у хостера версию php на PHP Version 7.4.6.

    Вроде работает.
     
    #6 savsoft, 20 май 2020
    Последнее редактирование: 20 май 2020
  7. twim32

    twim32 Активный пользователь

    С нами с:
    29 мар 2017
    Сообщения:
    275
    Симпатии:
    58
    Эх, опоздал...

    Я пользовался FineDiff. Если мне память не изменяет, существует 2 версии: оригинал (который работает на старом пыхе) и новая (под более новую пыху).
     
  8. savsoft

    savsoft Активный пользователь

    С нами с:
    1 фев 2017
    Сообщения:
    96
    Симпатии:
    2
    Нет, не опоздали. Simplediff работает, но есть некоторые недостатки для моего случая. Если в конце предложения не поставить точку, то он выделяет все слово с точкой, как отсутствующее, а слово без точки, как лишнее. JS diff.js выделяет только точку. Попробую и FineDiff. Спасибо.