Biker John
Biker John

Reputation: 2711

User agent, extract OS and browser from string

I'd like to extract full the OS name and browser from the user agent string. How can I do this?

Upvotes: 5

Views: 13449

Answers (3)

Félix Saparelli
Félix Saparelli

Reputation: 8719

There's also a built-in function in PHP to achieve this and more: get_browser().

$agent = get_browser();
echo $agent->platform;
echo $agent->parent; // or $agent->browser . $agent->version

Upvotes: 2

angelmedia
angelmedia

Reputation: 977

@augustknight: Note, the IE11 doesn´t send a "MSIE" token, i would suggest to add a match to a Trident token.

IE 11 user agent sample:

Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko

change code:

<?php
public static function getUserAgent()
{
    static $agent = null;

    if ( empty($agent) ) {
        $agent = $_SERVER['HTTP_USER_AGENT'];

        if ( stripos($agent, 'Firefox') !== false ) {
            $agent = 'firefox';
        } elseif ( stripos($agent, 'MSIE') !== false ) {
            $agent = 'ie';
        } elseif ( stripos($agent, 'Trident') !== false ) {
            $agent = 'ie';
        } elseif ( stripos($agent, 'iPad') !== false ) {
            $agent = 'ipad';
        } elseif ( stripos($agent, 'Android') !== false ) {
            $agent = 'android';
        } elseif ( stripos($agent, 'Chrome') !== false ) {
            $agent = 'chrome';
        } elseif ( stripos($agent, 'Safari') !== false ) {
            $agent = 'safari';
        } elseif ( stripos($agent, 'AIR') !== false ) {
            $agent = 'air';
        } elseif ( stripos($agent, 'Fluid') !== false ) {
            $agent = 'fluid';
        }

    }

    return $agent;
}

?>

Upvotes: 2

augustknight
augustknight

Reputation: 448

I think it is tricky to get the full OS name and full browser name since many browsers identify themselves differently. You will probably need some fancy regex and then it might not even work 100% of the time.

Here is the simple method I use to identify the browser. You may be able to adapt it to suit your needs.

<?php

public static function getUserAgent()
{
    static $agent = null;

    if ( empty($agent) ) {
        $agent = $_SERVER['HTTP_USER_AGENT'];

        if ( stripos($agent, 'Firefox') !== false ) {
            $agent = 'firefox';
        } elseif ( stripos($agent, 'MSIE') !== false ) {
            $agent = 'ie';
        } elseif ( stripos($agent, 'iPad') !== false ) {
            $agent = 'ipad';
        } elseif ( stripos($agent, 'Android') !== false ) {
            $agent = 'android';
        } elseif ( stripos($agent, 'Chrome') !== false ) {
            $agent = 'chrome';
        } elseif ( stripos($agent, 'Safari') !== false ) {
            $agent = 'safari';
        } elseif ( stripos($agent, 'AIR') !== false ) {
            $agent = 'air';
        } elseif ( stripos($agent, 'Fluid') !== false ) {
            $agent = 'fluid';
        }

    }

    return $agent;
}

Upvotes: 6

Related Questions