是否可以突出显示另一个文本段落中的修改?
例如,数据库中有3个文本字段。非管理员用户可以编辑文本并提交审批。当管理员登录时,他可以打开批准页面,并显示原始文本和用户提交的文本以及修改。通常这些修改本质上非常小,如拼写纠正或只删除或添加句子。
是否可以通过突出显示修改(来自原始文本)的方式呈现,以便管理员用户在批准之前不必检查每个字段和每一行?
任何帮助将不胜感激。 感谢。
更新: 有点类似于TortoiseSVN的代码更改突出显示。
答案 0 :(得分:9)
选项:
Stackoverflow存档:
答案 1 :(得分:3)
答案 2 :(得分:2)
这是一个老话题,但我认为我对我的发现进行了编目。
如果您想使用原始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
发生了什么的基本描述(取自文章):
像魅力一样!
答案 3 :(得分:1)
不确定,为什么这些长期解决方案存在。 在这里,我找到了一个简单的方法。
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-highlight-differences-between-strings/