是否可以突出显示另一个文本段落中的修改?
例如,数据库中有 3 个文本字段。非管理员用户可以编辑文本并提交以供批准。当管理员登录时,(s)他可以打开批准页面,它会显示原始文本和用户提交的带有修改的文本。通常这些修改本质上非常小,例如拼写更正或只是删除或添加句子。
是否可以以突出显示修改(来自原始文本)的方式呈现,以便管理员用户在批准之前不必检查每个字段和每一行?
任何帮助,将不胜感激。谢谢。
更新:有点类似于 TortoiseSVN 的代码更改突出显示。
是否可以突出显示另一个文本段落中的修改?
例如,数据库中有 3 个文本字段。非管理员用户可以编辑文本并提交以供批准。当管理员登录时,(s)他可以打开批准页面,它会显示原始文本和用户提交的带有修改的文本。通常这些修改本质上非常小,例如拼写更正或只是删除或添加句子。
是否可以以突出显示修改(来自原始文本)的方式呈现,以便管理员用户在批准之前不必检查每个字段和每一行?
任何帮助,将不胜感激。谢谢。
更新:有点类似于 TortoiseSVN 的代码更改突出显示。
这是一个旧线程,但我想我会记录我的发现。
如果您想使用原始 php,这是迄今为止我发现的最简单、最快和最有效的解决方案:http: //paulbutler.org/archives/a-simple-diff-algorithm-in-php/
据我所知,上述代码的作者正在使用本文中概述的算法:http: //www.codeproject.com/Articles/6943/A-Generic-Reusable-Diff-Algorithm-in-C-II
正在发生的事情的基本描述(取自文章):
奇迹般有效!
不确定,为什么会有这些长解决方案。在这里,我找到了一个对我来说很容易的。
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);
参考。https://forums.phpfreaks.com/topic/6525-how-do-i-highlight-differences-between-strings/