How to get user’s Browser and Operating Systems information using PHP?

March 26, 2021

Here’s the function we can use to do so.

function getBrowser()
    $u_agent = $_SERVER['HTTP_USER_AGENT'];
    $bname = 'Unknown';
    $platform = 'Unknown';
    $version= "";

    //First get the platform?
    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';
    // Next get the name of the useragent yes seperately and for good reason
    if(preg_match('/MSIE/i',$u_agent) &#038;&#038; !preg_match('/Opera/i',$u_agent))
        $bname = 'Internet Explorer';
        $ub = "MSIE";
        $bname = 'Mozilla Firefox';
        $ub = "Firefox";
        $bname = 'Google Chrome';
        $ub = "Chrome";
        $bname = 'Apple Safari';
        $ub = "Safari";
        $bname = 'Opera';
        $ub = "Opera";
        $bname = 'Netscape';
        $ub = "Netscape";
    // finally get the correct version number
    $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

// now try it
$yourbrowser= "Your browser: " . $ua['name'] . " " . $ua['version'] . " on " .$ua['platform'] . " reports: <br >" . $ua['userAgent'];

Credit goes to this comment.


Most Read

#1 How to check if radio button is checked or not using JavaScript? #2 Solution to “TypeError: ‘x’ is not iterable” in Angular 9 #3 How to uninstall Cocoapods from the Mac OS? #4 How to Use SQL MAX() Function with Dates? #5 How to add Read More Read Less Button using JavaScript? #6 PHP Login System using PDO Part 1: Create User Registration Page

Recently Posted

Apr 7 Solution for “Yarn build: Failed because of a stylelint error” Apr 7 Make sure your links have descriptive text Apr 7 How to add Laravel to WordPress using Sage theme (and install Tailwind CSS)? Apr 2 How to create a sidebar using pure CSS? Apr 1 How to switch dark and light themes using pure CSS? Apr 1 How to calculate elapsed time in JavaScript?

You might also like these

Content types in DrupalDrupalinclude, include_once, require, require_once in PHPPHPCan we execute conditions in SQL?SQL/MySQLHow to get current timestamp in Swift 4 and 5?SwiftSorting Arrays in JavaScriptJavaScriptMake sure your links have descriptive textUI/UXLearn how to use Self JOIN in SQL and MySQLSQL/MySQLWhat is Prototypal Inheritance in JavaScript?JavaScriptHow to get start index and end index (as int) of substring in Swift?SwiftCSS backface-visibility PropertyCSSWhat is an API?MiscHow to Find the Highest (or Lowest) Number in an Array in JavaScript?JavaScript