2010-03-12 44 views
3

我有这些阵列:PHP:视觉上的差异阵列之间2

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

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

谢谢您提前。

+0

你有做过吗?我对解决方案感兴趣 – greenLizard 2013-01-25 21:11:29

回答

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)进行文本比较,您将得到类似请求的输出。

PS。根据Text_Diff项目页面的说法:“这个软件包已被取代,但仍保留错误和安全修复程序,软件包已移至pear.horde.org,包Horde_Text_Diff。”