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

时间:2016-12-01 17:42:58

标签: php html database database-design

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

原件:

这些是我的评论。他们太棒了!

主管评论后:

这些是我的不那么好的评论。他们真棒! 我不同意。

使用MySQL和php,如果重要的话。

1 个答案:

答案 0 :(得分:1)

您可以尝试以下代码:

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>";

我不确定这是否是您正在寻找的。但我尽我所能为你提供解决方案。

此外,此代码适用于您在问题中提供的测试用例。

但我确信这段代码对所有测试用例都不灵活。

无论如何,请尝试使用您自己的不同测试用例来检查highlight_modified_string函数是否更有效。

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

Highlight the difference between two strings in PHP