compare($e1, $e2) == 0; } return $ok || $e1 == $e2 || strcasecmp($e1, $e2) == 0; } function array_compare(&$ar1, &$ar2) { if (gettype($ar1) != 'array' || gettype($ar2) != 'array') return false; // first a shallow diff if (count($ar1) != count($ar2)) return false; $diff = array_diff($ar1, $ar2); if (count($diff) == 0) return true; // diff failed, do a full check of the array foreach ($ar1 as $k => $v) { //print "comparing $v == $ar2[$k]\n"; if (gettype($v) == 'array') { if (!array_compare($v, $ar2[$k])) return false; } elseif (is_object($v)) { if (!object_compare($v, $ar2[$k])) return false; } else { if (!string_compare($v, $ar2[$k])) return false; } } return true; } function object_compare(&$o1, &$o2) { if (!is_object($o1) || !is_object($o2) || gettype($o1) != gettype($o2)) { return false; } $o1 = (array)$o1; $o2 = (array)$o2; return array_compare($o1, $o2); } function parseMessage($msg) { // strip line endings // $msg = preg_replace('/\r|\n/', ' ', $msg); $parser = new SOAP_Parser($msg); if ($parser->fault) { return $parser->fault->getFault(); } $response = $parser->getResponse(); $v = $parser->_decode($response); if (gettype($v) == 'array' && count($v) === 1) { return array_shift($v); } return $v; }