比较并突出显示php中包含html的两个字符串的区别

时间:2013-03-13 14:50:00

标签: php highlighting string-comparison

我正在尝试比较PHP中的两个包含HTML的字符串。 (它们都通过wysiwyg编辑器放入数据库中。)

我想得到的结果是查看哪些单词被删除以及哪些单词已被添加。

为此,我使用this bit of code,如下所示:

$old = "<p>Lorem ipsum is standard dummy text</p>";
$new = "<p>Lorem ipsum was standard dummy jibbrish</p>";
echo htmlDiff($old, $new);

完美无缺。但是,当我添加一些标签,例如<li>时,乐趣就会结束。

例如,如果我有以下内容:

$old = "<p>Lorem ipsum is standard dummy text. <ul><li>Lorem</li><li>Ipsum</li><li>Dolor</li></ul></p>";

$new = "<p>Lorem ipsum was standard dummy jibbrish. <ul><li>Lorem</li><li>Dolor</li></ul></p>";

echo htmlDiff($old, $new);

<del>标记在第一个列表项后正确添加,但删除的列表项放在<del>标记之外,使其看起来没有删除。

我可以通过剥离所有标记来解决这个问题,但我想保留两个字符串的布局。

非常感谢任何帮助或建议。

1 个答案:

答案 0 :(得分:4)

您可以尝试使用htmlDiff函数的以下替代方法之一:

  1. PHP inline dif小型库,可生成结果like this
  2. Horde_Text_Diff图书馆
  3. 来自xdiff扩展的
  4. xdiff_string_diff功能