#!/usr/local/bin/php -n Lookup($domain); unset($result['rawdata']); if (!isset($results[$domain])) { print_r($result); $res = get_answer("Add result for $domain"); if ($res) { // Add as it is unset($result['regrinfo']['disclaimer']); $results[$domain] = $result; save_results(); } } else { // Compare with previous result unset($result['regrinfo']['disclaimer']); unset($results[$domain]['regrinfo']['disclaimer']); if (empty($result)) echo "!! empty result\n"; else { $diff = array_diff_assoc_recursive($result,$results[$domain]); if (is_array($diff)) { print_r($diff); $res = get_answer("Accept differences for $domain"); if ($res) { // Add as it is $results[$domain] = $result; save_results(); } } else echo "Handler for domain $domain gives same results as before ...\n"; } } } save_results(); //-------------------------------------------------------------------------- function save_results() { global $results; $fp = fopen('testsuite.txt','wt'); fputs($fp, serialize($results)); fclose($fp); } //-------------------------------------------------------------------------- function get_answer($question) { echo "\n------ $question ? (y/n/a/c) "; while (true) { $res = trim(fgetc(STDIN)); if ($res=='a') exit(); if ($res=='c') { save_results(); exit(); } if ($res=='y') return true; if ($res=='n') return false; } } //-------------------------------------------------------------------------- function array_diff_assoc_recursive($array1, $array2) { foreach($array1 as $key => $value) { if (is_array($value)) { if (!is_array($array2[$key])) { $difference[$key] = array( 'previous' => $array2[$key], 'actual' => $value); } else { $new_diff = array_diff_assoc_recursive($value, $array2[$key]); if ($new_diff != false) { $difference[$key] = $new_diff; } } } else if (!isset($array2[$key]) || $array2[$key] != $value) { $difference[$key] = array( 'previous' => $array2[$key], 'actual' => $value); } } // Search missing items foreach($array2 as $key => $value) { if (!isset($array1[$key])) $difference[$key] = array( 'previous' => $value, 'actual' => '(missing)'); } return !isset($difference) ? false : $difference; }