Php 如何突出显示一个文本段落与另一个文本段落的更改/差异?
是否可以突出显示一个文本段落与另一个文本段落中的修改 例如,数据库中有3个文本字段。非管理员用户可以编辑文本并提交审批。当管理员登录时,他可以打开approvals页面,显示原始文本和用户提交的文本,并进行修改。通常,这些修改在本质上是非常小的,比如拼写更正或只是删除或添加一个句子 它是否可以以这样一种方式呈现,即突出显示修改(来自原始文本),以便管理员用户在批准之前不必检查每个字段和每一行 任何帮助都将不胜感激。 谢谢 更新: 有些类似于OrtoiseSVN的代码更改突出显示。选项:Php 如何突出显示一个文本段落与另一个文本段落的更改/差异?,php,javascript,mysql,css,highlighting,Php,Javascript,Mysql,Css,Highlighting,是否可以突出显示一个文本段落与另一个文本段落中的修改 例如,数据库中有3个文本字段。非管理员用户可以编辑文本并提交审批。当管理员登录时,他可以打开approvals页面,显示原始文本和用户提交的文本,并进行修改。通常,这些修改在本质上是非常小的,比如拼写更正或只是删除或添加一个句子 它是否可以以这样一种方式呈现,即突出显示修改(来自原始文本),以便管理员用户在批准之前不必检查每个字段和每一行 任何帮助都将不胜感激。 谢谢 更新: 有些类似于OrtoiseSVN的代码更改突出显示。选项: (使用
- (使用PEAR文本差异)
你可以在这里找到:。这是一条旧线索,但我想我会把我的发现分类 如果您想使用原始php,这是迄今为止我发现的最简单、最快、最有效的解决方案: 据我所知,上述代码的作者正在使用本文概述的算法: 对正在发生的事情的基本描述(摘自文章):
- 查找项目的当前最长匹配序列(LMS)李>
- 将此LMS存储在结果堆中
- 使用递归处理LMS上方的所有数据
- 使用递归处理LMS下方的所有数据
工作起来很有魅力 不确定,为什么会有这么长的解决方案。 在这里,我找到了一个简单的方法
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);
string1=“敏捷的棕色狐狸跳过懒惰的狗。”;
$string2=“敏捷的棕色白化病狐狸跳过了一条时髦的狗。”;
$string1=分解(“,$string1”);
$string2=分解(“,$string2”);
$diff=array_intersect($string2,$string1);
$tmp=array();
foreach($string2为$k=>$w){
如果($diff[$k]=$w){
$tmp[$k]=$w;
}
否则{
$tmp[$k]=“$w”;
}
}
$diff=array_diff($string1,$tmp);
foreach($k=>w){
$tmp[$k]。=“[$w]”;
}
回声连接(“”,$tmp);
参考mmmm。。不确定它是否也亮了