مرورگرها ابزار اصلی دسترسی به سایت ها و گشت و گذار در اینترنت هستند و هر کدام یک نام و شناسه مخصوص به خود دارند. تفاوت نام مرورگرها عموما با تفاوت هسته مرورگرها هم همراه است و هر مرورگر، ممکن است وب سایت شما را به صورت متفاوتی اجرا کند، بنابراین در صورت نیاز می توانید کدهایتان را بر اساس مرورگر تفکیک کرده و کدهای مختلفی برای هر مرورگر اجرا کنید. در این تاپیک از انجمن بی تاک قصد داریم کدی به شما معرفی کنیم که در عین کوچک و سبک بودن، می تواند نام مرورگر را دریافت کرده و با کمی خلاقیت و ترکیب آن با سایر توابع شرطی، می توانید از نام مرورگرها برای اجرای کدهای مختلف استفاده کنید.

کد اصلی برای دریافت User Agent مرورگر یا همان نام اصلی مرورگرها به این صورت است:
<?php
$useragent = $_SERVER ['HTTP_USER_AGENT'];
echo "<b>مرورگر شما</b>: " . $useragent;
?>
خروجی کد بالا، یک رشته کد طولانی شامل نام هسته مرورگر و نسخه و نام مرورگر و … می شود یا به عبارتی شناسه دقیق مرورگر کاربر نمایش داده می شود. برای مثال یک خروجی از کد بالا به این صورت خواهد بود:
Mozilla/5.0 (X11; Linux i686) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.68 Safari/534.24
اما اگر قصد دارید نام دقیق مرورگر برای مثال Chrome یا Firefox و … را بدون درج اطلاعات اضافه داخل سایت نمایش دهید، بجای کد بالا می توانید از این کد توسعه یافته استفاده کنید. در کد زیر، ما هر بخش از User-Agent را به صورت تفکیک شده و جدا از هم نمایش می دهیم، شما می توانید از هر بخش از این کد بطور جداگانه استفاده کنید.
<?php
function getBrowser() {
$u_agent = $_SERVER['HTTP_USER_AGENT'];
$bname = 'Unknown';
$platform = 'Unknown';
$version= "";
// دریافت پلتفرم مرورگر
if (preg_match('/linux/i', $u_agent)) {
$platform = 'linux';
}elseif (preg_match('/macintosh|mac os x/i', $u_agent)) {
$platform = 'mac';
}elseif (preg_match('/windows|win32/i', $u_agent)) {
$platform = 'windows';
}
// دریافت نام مرورگر
if(preg_match('/MSIE/i',$u_agent) && !preg_match('/Opera/i',$u_agent)){
$bname = 'Internet Explorer';
$ub = "MSIE";
}elseif(preg_match('/Firefox/i',$u_agent)){
$bname = 'Mozilla Firefox';
$ub = "Firefox";
}elseif(preg_match('/OPR/i',$u_agent)){
$bname = 'Opera';
$ub = "Opera";
}elseif(preg_match('/Chrome/i',$u_agent) && !preg_match('/Edge/i',$u_agent)){
$bname = 'Google Chrome';
$ub = "Chrome";
}elseif(preg_match('/Safari/i',$u_agent) && !preg_match('/Edge/i',$u_agent)){
$bname = 'Apple Safari';
$ub = "Safari";
}elseif(preg_match('/Netscape/i',$u_agent)){
$bname = 'Netscape';
$ub = "Netscape";
}elseif(preg_match('/Edge/i',$u_agent)){
$bname = 'Edge';
$ub = "Edge";
}elseif(preg_match('/Trident/i',$u_agent)){
$bname = 'Internet Explorer';
$ub = "MSIE";
}
// دریافت نسخه مرورگر
$known = array('Version', $ub, 'other');
$pattern = '#(?<browser>' . join('|', $known) .
')[/ ]+(?<version>[0-9.|a-zA-Z.]*)#';
if (!preg_match_all($pattern, $u_agent, $matches)) {
// we have no matching number just continue
}
// see how many we have
$i = count($matches['browser']);
if ($i != 1) {
//we will have two since we are not using 'other' argument yet
//see if version is before or after the name
if (strripos($u_agent,"Version") < strripos($u_agent,$ub)){
$version= $matches['version'][0];
}else {
$version= $matches['version'][1];
}
}else {
$version= $matches['version'][0];
}
// check if we have a number
if ($version==null || $version=="") {$version="?";}
return array(
'userAgent' => $u_agent,
'name' => $bname,
'version' => $version,
'platform' => $platform,
'pattern' => $pattern
);
}
// نمایش نام مرورگر و نسخه
$ua=getBrowser();
$yourbrowser= "مرورگر شما: " . $ua['name'] . " " . $ua['version'] . " در پلتفرم " .$ua['platform'] . " گزارش: <br >" . $ua['userAgent'];
print_r($yourbrowser);
?>