Php 数据库-跟踪对文本字段的更改

Php 数据库-跟踪对文本字段的更改,php,html,database,database-design,Php,Html,Database,Database Design,跟踪文本字段的更改/添加的最佳方式是什么?对于数据库中的特定记录,我有一个“注释”字段。我想做的是,当用户在网站上查看记录时,他们的原始评论会以纯文本形式出现。当主管随后进行更改/添加时,他们的评论将以粗体显示。这些评论可以出现在文本的任何地方。例如: 原件: 以下是我的评论。他们太棒了 监理人提出意见后: 这些是我的不太好的评论。他们太棒了我不同意。 如果需要的话,可以使用MySQL和php。您可以尝试以下代码: function highlight_modified_string($actu

跟踪文本字段的更改/添加的最佳方式是什么?对于数据库中的特定记录,我有一个“注释”字段。我想做的是,当用户在网站上查看记录时,他们的原始评论会以纯文本形式出现。当主管随后进行更改/添加时,他们的评论将以粗体显示。这些评论可以出现在文本的任何地方。例如:

原件:

以下是我的评论。他们太棒了

监理人提出意见后:

这些是我的不太好的评论。他们太棒了我不同意。


如果需要的话,可以使用MySQL和php。

您可以尝试以下代码:

function highlight_modified_string($actual_string, $modified_string) {
    $str_array = explode(' ', $actual_string);
    $str_edited_array = explode(' ', $modified_string);
    $str_added = array_diff($str_edited_array, $str_array);

    foreach($str_edited_array as &$str_edited_value) {
        foreach($str_added as $str_added_value) {
            if($str_added_value == $str_edited_value) {
                $str_edited_value = '<span style="font-weight: bold">' . $str_edited_value . '</span>';
            }
        }
        unset($str_edited_value);
    }

    return implode(' ', $str_edited_array);
}

$str = "These are my comments. They are awesome!";
$str_edited = "These are my not so great comments. They are awesome! I disagree.";
$str_modified = highlight_modified_string($str, $str_edited);

echo "<p>{$str}</p>";
echo "<p>{$str_modified}</p>";
函数突出显示\u修改的\u字符串($actual\u string,$modified\u string){
$str_数组=分解(“”,$actual_字符串);
$str_edited_array=explode(“”,$modified_string);
$str_added=array_diff($str_edited_array,$str_array);
foreach($str_edited_array as&$str_edited_value){
foreach($str_作为$str_附加值添加){
如果($str_added_value==$str_edited_value){
$str_编辑的_值=“”。$str_编辑的_值。“”;
}
}
未设置($str\u编辑的\u值);
}
返回内爆(“”,$str\u编辑的\u数组);
}
$str=“这是我的评论,太棒了!”;
$str_edited=“这些是我不太好的评论。它们太棒了!我不同意。”;
$str\u modified=突出显示\u modified\u字符串($str,$str\u edited);
回声“{$str}

”; echo“{$str_modified}

”;
我不确定这是否是你要找的。但我已经尽我所能为你提供了我能提供的解决方案

此外,此代码与您在问题中提供的测试用例配合使用

但是我确信这段代码对于所有的测试用例来说都是不灵活的

无论如何,请尝试您自己的不同测试用例,以检查
highlight\u modified\u string
函数是否工作得更好

如果您正在寻找灵活的解决方案,您可以参考以下帖子,其中有标记的答案:


您的意思是,主管在评论中添加的唯一文本将以粗体显示?@mang要开发此功能,您应该先对版本控制进行一些研究。版本控制(修订控制)正是为了这个目的,用于跟踪更改、添加或删除。@Perumal93-Correct@WaqasBukhary-我指的是跟踪数据更改,而不是数据库更改。是的,对数据进行修订控制,而不是数据库。搜索一些php库,可以帮助,试试这个谢谢,这应该做什么我需要它做。我将添加一个名为“supervisor comments”的额外列,并将这两个字符串与此进行比较。非常感谢。你测试得很好吗?因为它只适用于添加的字符串中不存在的单词。