Domanda

E 'possibile evidenziare le modifiche in un paragrafo di testo dagli altri?

Per esempio, ci sono 3 campi di testo in un database. gli utenti non amministratori possono modificare il testo e inviare per l'approvazione. Quando l'amministratore esegue l'accesso, (s) può aprire la pagina di approvazioni e si vede il testo originale e testo utente presentate con modifiche. Di solito queste modifiche sono molto piccole in natura, come correzione ortografica o solo una delezione o l'aggiunta di una frase.

Può essere presentato in modo tale che le modifiche (dal testo originale) sono evidenziati in modo che gli utenti di amministrazione non devono controllare ogni campo e ogni linea prima di approvare esso?

Qualsiasi aiuto sarebbe apprezzato. Grazie.

Aggiornamento: Un po 'simile al codice del TortoiseSVN evidenziando le variazioni.

Altri suggerimenti

Se si ha familiarità con gli strumenti di GNU / Linux, si potrebbe avere familiarità con lo strumento `diff'.

E qualcuno ha scritto un diff completamente funzionale per il confronto di file / stringhe in PHP.

È possibile trovare qui: php esempio diff .

Questo è un vecchio thread, ma ho pensato di catalogo i miei risultati.

Se si desidera utilizzare php crudo, questo è di gran lunga il più veloce, e la soluzione più semplice, più efficace che ho trovato: http://paulbutler.org/archives/a-simple-diff-algorithm-in-php/

Da quello che posso dire, l'autore del codice di cui sopra sta usando un algoritmo descritto in questo articolo: http://www.codeproject.com/Articles/6943/A-Generic-Reusable-Diff-Algorithm-in-C-II

Descrizione di base di ciò che sta accadendo (tratto da l'articolo):

  • Trova l'attuale sequenza corrispondente più lungo (LMS) di elementi.
  • conservare questo LMS in un mucchio risultati.
  • Processo di tutti i dati rimasti al di sopra dei LMS utilizzando la ricorsione.
  • Processo di tutti i dati rimasti al di sotto LMS utilizzando la ricorsione.

Funziona come un fascino!

Non è sicuro, perché questi lunghi soluzioni ci sono. qui avevo trovato un facile per me.

string1 = "The quick brown fox jumps over the lazy dog.";
$string2 = "The quick brown albino fox jumps the groovy dog.";

$string1 = explode(" ", $string1);
$string2 = explode(" ", $string2);

$diff = array_intersect($string2, $string1);

$tmp = array();
foreach ($string2 as $k => $w) {
         if ($diff[$k]==$w) {
             $tmp[$k] = $w;
         }
         else {
               $tmp[$k] = "<b>$w</b>";
         }
}
$diff = array_diff($string1, $tmp);

foreach ($diff as $k => $w) {
         $tmp[$k] .= " [<strike>$w</strike>]";
}

echo join (' ', $tmp);

ref. https://forums.phpfreaks.com / topic / 6525-how-do-i-evidenziazione-differenze-tra-strings /

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top