【问题标题】:compare and highlight difference of two strings containing html in php比较并突出显示php中包含html的两个字符串的差异
【发布时间】:2013-03-22 03:33:30
【问题描述】:

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

我想要得到的结果是看看哪些词被删除了,哪些词被添加了。

为此,我使用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);

效果很好。但是,当我添加一些标签(例如&lt;li&gt;)时,乐趣就结束了。

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

$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);

&lt;del&gt; 标记被正确添加到第一个列表项之后,但删除的列表项被放置在 &lt;del&gt; 标记之外,使它看起来好像没有被删除。

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

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

【问题讨论】:

    标签: php highlighting string-comparison


    【解决方案1】:

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

    1. PHP inline dif 产生结果的迷你库like this
    2. Horde_Text_Diff图书馆
    3. xdiff_string_diff 来自 xdiff 扩展的函数

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-02-19
      • 2017-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多