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