Hello, Below is code I hacked up to read a user agent string (i.e. Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:0.9.8) Gecko/20020204 ) and return several items including: - the browser name, - the browser version, - the browser's major version number, and - user definable compatibility listings.
This post is attached so that others may benefit. DISCLAIMER: I've been working with PHP for a few months... about as long as I've ever been programming - feel free to trust my brain at your own risk. Your thoughts and suggestions are welcome. :-) ASSUMING CORRECTIONS ARE MADE DUE TO MAILING-LIST COMMENTS, I WILL REPOST THIS CODE. Cheers, Rob P.S. Is this the correct forum for tossing code around? Now for the code... WEB PAGE: (*.php ) <-- I removed all the HTML for readability. <? require ("sniff.inc"); require ("ua.inc"); $uasniff = sniff ($HTTP_USER_AGENT); $uaraw = $uasniff[raw]; $uaname = $uasniff[name]; $uaversion = $uasniff[version]; $uamajor = $uasniff[major]; $uatest = ua ("$uaname", "$uamajor"); echo $uaraw; echo $uaname; echo $uaversion; if ($uatest) { echo "compatible"; } else { echo "not compatible"; } ?> REQUIRED FILE: (sniff.inc ) <? function sniff($ua) { if ( preg_match("/Mozilla/",$ua) == true ) { if ( preg_match("/MSIE/",$ua) == true && preg_match("/Opera/",$ua) == false ) { preg_match("/(?<=MSIE )\S{3}/",$ua, $matches); $name = "Internet Explorer"; $version = $matches[0]; } elseif ( preg_match("/Netscape/",$ua) == true ) { preg_match("/(?<=Netscape6\/)\S{3,5}/",$ua, $matches); $name = "Netscape"; $version = $matches[0]; } elseif ( preg_match("/Opera/",$ua) == true ) { preg_match("/(?<=Opera )\S{3,5}/",$ua, $matches); $name = "Opera"; $version = $matches[0]; } elseif ( preg_match("/Gecko/",$ua) == true ) { preg_match("/(?<=rv:)\S{3,5}/",$ua, $matches); $name = "Mozilla"; $version = $matches[0]; } else { preg_match("/(?<=Mozilla\/)\S{3,5}/",$ua, $matches); $name = "Netscape"; $version = $matches[0]; } } elseif ( preg_match("/Lynx/",$ua) == true ) { preg_match("/(?<=Lynx\/)\S{3,11}/",$ua, $matches); $name = "Lynx"; $version = $matches[0]; } if ( $version == true ) { preg_match("/[0-9]/", $version, $matches); $major = $matches[0]; } return array ( 'name' => $name , 'version' => $version, 'major' => $major, 'raw' => $ua ); } ?> REQUIRED FILE: (ua.inc ) <? function ua($name, $major) { $uaarray = array ( "Internet Explorer" => array ( 4 => "true", 5 => "true", 6 => "true" ), "Netscape" => array ( 4 => "true", 6 => "true" ), "Opera" => array ( 5 => "true", 6 => "true" ), "Mozilla" => array ( 0 => "true" ), ); if ($uaarray[$name][$major]) { return "1"; } } ?> ---------------------------------------------------------------------- Robert J. Miller Internet Support Specialist Department of Government Services and Lands P.O. Box 8700, St. John's, NF., A1B-4J6 (709) 729-4520 (phone) (709) 729-4151 (facsimile) (709) 778-8746 (pager) http://www.gov.nf.ca/gsl/ mailto:[EMAIL PROTECTED] ---------------------------------------------------------------------- Simple things should be simple and hard things should be possible. ---------------------------------------------------------------------- -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php