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

时间:2010-03-12 00:55:10

标签: php arrays diff

我有这些数组:

<?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

这里的任何人都知道这样做的第三方课吗?我一直在看一些,但他们都没有。 = /

提前谢谢。

2 个答案:

答案 0 :(得分: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突出显示相应区域
  5. 我确信这样做。这样做的一个好处就是你可以随意控制屏幕上的外观。

    使用当然可以在服务器端执行所有操作,即将所有样式与其他html标记一起硬编码

答案 1 :(得分:0)

看看PEAR Text_Diff。用法显示在http://www.hawkee.com/snippet/2238/

然后创建var_export($ array1,TRUE)和var_export($ array2,TRUE)的文本差异,您将获得所需的输出。

PS。根据Text_Diff项目页面:“此软件包已被取代,但仍然针对错误和安全修复程序进行维护。软件包已移至渠道pear.horde.org,软件包Horde_Text_Diff。”