2010-03-12 43 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。」