public function sniff()
    {
        /*$output = "<p><code>".$this->getUserAgent()."</code></p>\n";*/
        $output = "<dl>\n";
        $output .= "<dt>OS</dt><dd>" . $this->get("system_name") . " " . $this->get("system_ver") . "</dd>\n";
        $output .= "<dt>Browser</dt><dd>" . $this->get("browser_name") . " " . $this->get("browser_ver") . "</dd>\n";
        $output .= "<dt>Engine</dt><dd>" . $this->get("engine_name") . " " . $this->get("engine_ver") . "</dd>\n";
        $output .= "</dl>\n";
        return $output;
    }
    public static function test($tests)
    {
        foreach ($tests as $test) {
            $sniffer = new self($test);
            return $sniffer->sniff();
        }
    }
}
ClientSniffer::systems(array("Windows" => array("Windows NT", "Windows"), "Mac OS" => array("Mac OS X Leopard", "Mac OS X", "Mac", "Macintosh", "PowerPC", "PPC"), "Linux" => array("Linux", "FreeBSD", "OpenBSD", "NetBSD", "SunOS", "X11")));
ClientSniffer::browsers(array("Links" => NULL, "Midori" => NULL, "Opera" => array(NULL, array("Version", "Opera")), "Camino" => NULL, "Firefox" => array("Firefox", "Iceweasel", "Minefield", "Shiretoko", "Namoroka", "BonEcho", "GranParadiso"), "Internet Explorer" => array("MSIE"), "Chrome" => array("Chrome", "ChromePlus", "Iron"), "Shiira" => NULL, "Safari" => array(NULL, array("Version")), "Konqueror" => NULL, "iCab" => NULL, "OmniWeb" => NULL));
ClientSniffer::engines(array("WebKit" => NULL, "KHTML" => NULL, "Gecko" => array(NULL, array("rv:")), "Trident" => NULL, "Tasman" => NULL, "Presto" => NULL));
ClientSniffer::assume(array("browser_name" => "Internet Explorer", "system_name" => "Mac OS"), array("engine_name" => "Tasman"));
ClientSniffer::assume(array("browser_name" => "Internet Explorer", "system_name" => "Windows"), array("engine_name" => "Trident"));
ClientSniffer::assume(array("browser_name" => "Safari", "system_name" => "Linux"), array("engine_name" => NULL));
ClientSniffer::assume(array("system_name" => "Windows", "system_ver" => array("5", "5.0")), array("system_ver" => "2000"));
ClientSniffer::assume(array("system_name" => "Windows", "system_ver" => array("5.1", "5.2")), array("system_ver" => "XP"));
ClientSniffer::assume(array("system_name" => "Windows", "system_ver" => "6.0"), array("system_ver" => "Vista"));
ClientSniffer::assume(array("system_name" => "Windows", "system_ver" => array("6.1", "6.2")), array("system_ver" => "7"));
ClientSniffer::assume(array("browser_name" => "OmniWeb"), array("engine_name" => "WebKit"));
ClientSniffer::assume(array("browser_name" => "Konqueror", "engine_name" => NULL), array("engine_name" => "KHTML"));
ClientSniffer::assume(array("browser_name" => "Opera", "engine_name" => NULL), array("engine_name" => "Presto"));