Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Porównaj dwie różne tablice wielowymiarowe i zaznacz zmiany

Z tego, co zebrałem, szukasz sposobu na podkreślenie różnic w tekście, aby zobaczyć różnice między opisami. Od tego momentu mogę zasugerować ograniczenie funkcji diff tylko do b_discription ponieważ inne atrybuty wydają się nie mieścić w zakresie tego, czego potrzebujesz. Czy oczekujesz business_logo , business_name lub mod_date do zmiany? Niezależnie od tego, poniższa funkcja może zostać uruchomiona na wszystkich atrybutach w twoim obiekcie, jeśli można je przekonwertować na ciąg.

simplediff to doskonały skrypt, który odnajduje różnicę między dwoma ciągami znaków, w tym:

  • Istnieje w A, a nie B (usunięcie)
  • Istnieje w B, a nie w A (wstawienie)
<?php
/*
    Paul's Simple Diff Algorithm v 0.1
    (C) Paul Butler 2007 <http://www.paulbutler.org/>
    May be used and distributed under the zlib/libpng license.
*/
function diff($old, $new){
    $matrix = array();
    $maxlen = 0;
    foreach($old as $oindex => $ovalue){
        $nkeys = array_keys($new, $ovalue);
        foreach($nkeys as $nindex){
            $matrix[$oindex][$nindex] = isset($matrix[$oindex - 1][$nindex - 1]) ?
                $matrix[$oindex - 1][$nindex - 1] + 1 : 1;
            if($matrix[$oindex][$nindex] > $maxlen){
                $maxlen = $matrix[$oindex][$nindex];
                $omax = $oindex + 1 - $maxlen;
                $nmax = $nindex + 1 - $maxlen;
            }
        }   
    }
    if($maxlen == 0) return array(array('d'=>$old, 'i'=>$new));
    return array_merge(
        diff(array_slice($old, 0, $omax), array_slice($new, 0, $nmax)),
        array_slice($new, $nmax, $maxlen),
        diff(array_slice($old, $omax + $maxlen), array_slice($new, $nmax + $maxlen)));
}
function htmlDiff($old, $new){
    $ret = '';
    $diff = diff(preg_split("/[\s]+/", $old), preg_split("/[\s]+/", $new));
    foreach($diff as $k){
        if(is_array($k))
            $ret .= (!empty($k['d'])?"<del>".implode(' ',$k['d'])."</del> ":'').
                (!empty($k['i'])?"<ins>".implode(' ',$k['i'])."</ins> ":'');
        else $ret .= $k . ' ';
    }
    return $ret;
}

$old = "We smsfactory are world's leading SMS messaging provider offering remarakable and reliable SMS Text and Voice messaging globally through almost all-networks of mobile phones successfully. You may contact-us anytime for making any query. Our Services are very useful economically as well as eco-friendly";

$new = "We smsfactory are world's leading SMS messaging provider offering remarakable and reliable SMS Text and Voice messaging globally through almost all-networks of mobile phones successfully. You may contact-us anytime for making any query. Our Services are very useful economically as well as eco-friendly, which enables you to send simultaneous bulk sms to your targeted Customers, Regular-Customers, Buyers, Shoppers, Fans, Regular-shoppers, Clients, Clientele, Members, Managers, Supervisors, Fieldworkers, Graduates, Post graduates, Technicians, Public, Citizens, Mobile-Users, Viewers, Future-purchasers, Users, End-users, Students, Job-seekers, Enjoyers, Visitors, Frequent-visitors, Persons, Individuals, Frequenter, Obtainers, Receivers, Assignees, Recipients, Travelers, Tourists, Guys, Persons, Men and Women, Spectators, Technicians, Staff, Workers, Recruiters, Newcomers, Representatives, Dealers, Distributors, Followers, Shareholders, Investors, Bondholders, Shareowners, Financiers, Bankers, Participants, Associates, Assistants, Colleagues, Contributors, Helpers, Partakers, Party, Sharers, Supporters, Admirers, Devotees, Groupies, Enthusiasts and many more.";

?>
<!doctype html>
<head>
    <style>
        .container {
            width: 50%;
            margin-right: auto;
            margin-left: auto;
            font-family: sans-serif;
            font-size: 12px;
            line-height: 16px;
        }

        del {
            background-color: #FFAB91;
            color: ;
            text-decoration: none;
        }

        ins {
            background-color: #C5E1A5;
            color: ;
            text-decoration: none;
        }
    </style>
</head>
<body>
    <div class="container">
        <?php echo htmlDiff($old, $new); ?>
    </div>  
</body>
</head>

Przykład roboczy:https://3v4l.org/uU0dv




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Najlepszy sposób w MySQL lub Rails na codzienne pobieranie AVG w określonym zakresie dat

  2. Najlepszy sposób na hostowanie MySQL w chmurze Azure

  3. Konwersja znaczników czasu Oracle na MySQL w instrukcji wstawiania MySQL

  4. Fluent NHibernate DuplicateMappingException z automappingiem

  5. wybierz poprzednią datę, mysql