PHP:两个数组之间视觉上的差异

3

I've these arrays:

<?php

// New
$array1 = array(
    array(
        'g_id' => '1',
        'g_title' => 'Root Admin',
        'g_perm_id' => '1',
        'g_bitoptions' => '0'
    ),
    array(
        'g_id' => '2',
        'g_title' => 'Member',
        'g_perm_id' => '2',
        'g_bitoptions' => '32'
    ),
    array(
        'g_id' => '3',
        'g_title' => 'Banned',
        'g_perm_id' => '3',
        'g_bitoptions' => '0'
    )
);

// Old
$array2 = array(
    array(
        'g_id' => '1',
        'g_title' => 'Admin',
        'g_perm_id' => '1',
        'g_bitoptions' => '0'
    ),
    array(
        'g_id' => '2',
        'g_title' => 'User',
        'g_perm_id' => '2',
        'g_bitoptions' => '0'
    ),
    array(
        'g_id' => '4',
        'g_title' => 'Validating',
        'g_perm_id' => '4',
        'g_bitoptions' => '0'
    )
);

我需要的是一个HTML可视化差异,就像这张图片一样: diff http://imageshack.us/a/img519/3237/diffe.png 这里有人知道任何第三方类可以做到这一点吗?我已经看过一些但没有一个能够满足要求。 =/
提前感谢你。

你成功做到了吗?我对解决方案很感兴趣。 - greenLizard
2个回答

1

这可能与您的问题不直接相关。

如果您查看链接中的示例图像,我担心高亮区域是由JavaScript和/或而不是PHP定义的 - 原因是:因为您无法告诉简单的diff()算法以那种方式进行突出显示。

因此,请尝试类似于以下内容:

当您在浏览器中“打印”某些内容时,分配颜色属性,例如:

<php code>
    <div class="red">blah blah blah</div>
    <div class="green">blah blah blah</div>
</php code>

服务器端的php代码只需要做一件事情:找到不同的部分,并生成相应的类属性。

抱歉,我暂时没有时间给你写一个解决方案。

总之,执行过程如下:

  1. 在服务器端使用php对象
  2. 使用php找到差异
  3. 使用php打印纯html代码
  4. 使用css突出显示对应的区域

我相信这样做是可行的。而且这种方式的一个优点是,你可以任意控制屏幕上的外观。

当然,你也可以在服务器端完成所有工作,即将所有样式与其他html标签硬编码在一起。


0

看看 PEAR Text_Diff。使用方法在 http://www.hawkee.com/snippet/2238/ 上有示例。

然后对 var_export( $array1, TRUE ) 和 var_export( $array2, TRUE ) 进行文本差异比较,你将得到所需的输出。

附注:根据 Text_Diff 项目页面的说明:“该软件包已被取代,但仍保持对错误和安全修复的维护。软件包已迁移到渠道 pear.horde.org,名称为 Horde_Text_Diff。”


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接