Complete Guide to Getting and Parsing User Agent Strings in PHP

Nov 25, 2025 · Programming · 11 views · 7.8

Keywords: PHP | User Agent | Browser Detection | $_SERVER | HTTP Headers

Abstract: This article provides a comprehensive overview of various methods to retrieve user agent strings in PHP, with detailed analysis of the $_SERVER['HTTP_USER_AGENT'] variable and complete implementation of user agent parsing functions. It covers the entire process from basic retrieval to advanced parsing, including browser detection, bot identification, and practical application scenarios to help developers accurately identify client environments.

Fundamental Concepts of User Agent Strings

User agent strings are crucial fields in HTTP request headers that contain information about client software, including browser type, version, operating system, and more. In web development, accurately identifying user agents is essential for providing customized experiences, statistical analysis, and compatibility handling.

Basic Methods for Retrieving User Agents in PHP

PHP offers straightforward ways to access user agent strings. By accessing the $_SERVER['HTTP_USER_AGENT'] superglobal variable, developers can easily obtain complete user agent information. This variable contains all user agent data sent by the client in HTTP requests.

<?php
// Retrieve user agent string
$user_agent = $_SERVER['HTTP_USER_AGENT'];
echo "User Agent: " . $user_agent;
?>

Techniques for Parsing User Agent Strings

Raw user agent strings typically contain extensive information that requires parsing to extract useful browser or device details. Below is a comprehensive implementation of a user agent parsing function:

<?php
function get_browser_name($user_agent)
{
    $t = strtolower($user_agent);
    $t = " " . $t;
    
    if (strpos($t, 'opera') || strpos($t, 'opr/')) return 'Opera';
    elseif (strpos($t, 'edge')) return 'Edge';
    elseif (strpos($t, 'chrome')) return 'Chrome';
    elseif (strpos($t, 'safari')) return 'Safari';
    elseif (strpos($t, 'firefox')) return 'Firefox';
    elseif (strpos($t, 'msie') || strpos($t, 'trident/7')) return 'Internet Explorer';
    elseif (strpos($t, 'google')) return '[Bot] Googlebot';
    elseif (strpos($t, 'bing')) return '[Bot] Bingbot';
    elseif (strpos($t, 'slurp')) return '[Bot] Yahoo! Slurp';
    elseif (strpos($t, 'duckduckgo')) return '[Bot] DuckDuckBot';
    elseif (strpos($t, 'baidu')) return '[Bot] Baidu';
    elseif (strpos($t, 'yandex')) return '[Bot] Yandex';
    elseif (strpos($t, 'sogou')) return '[Bot] Sogou';
    elseif (strpos($t, 'exabot')) return '[Bot] Exabot';
    elseif (strpos($t, 'msn')) return '[Bot] MSN';
    elseif (strpos($t, 'mj12bot')) return '[Bot] Majestic';
    elseif (strpos($t, 'ahrefs')) return '[Bot] Ahrefs';
    elseif (strpos($t, 'semrush')) return '[Bot] SEMRush';
    elseif (strpos($t, 'rogerbot') || strpos($t, 'dotbot')) return '[Bot] Moz or OpenSiteExplorer';
    elseif (strpos($t, 'frog') || strpos($t, 'screaming')) return '[Bot] Screaming Frog';
    elseif (strpos($t, 'facebook')) return '[Bot] Facebook';
    elseif (strpos($t, 'pinterest')) return '[Bot] Pinterest';
    elseif (strpos($t, 'crawler') || strpos($t, 'api') ||
             strpos($t, 'spider') || strpos($t, 'http') ||
             strpos($t, 'bot') || strpos($t, 'archive') ||
             strpos($t, 'info') || strpos($t, 'data')) return '[Bot] Other';
    return 'Other (Unknown)';
}

// Usage example
$browser_name = get_browser_name($_SERVER['HTTP_USER_AGENT']);
echo "Detected Browser: " . $browser_name;
?>

Implementation Principles of the Parsing Function

The parsing function employs a string matching strategy to identify different browsers and bots. The function first converts the user agent string to lowercase and adds a leading space to address the special behavior of the strpos function when matching at position 0. It then performs a series of conditional checks in a specific order to examine whether the user agent string contains particular keywords.

The function design considers browser identification priorities. For instance, Chrome user agent strings typically include "Safari" as well, so "Chrome" must be checked before "Safari". Similarly, for bot detection, the function includes common search engine crawlers and data analysis tools.

Practical Application Scenarios

User agent information has various practical applications in web development:

<?php
$appName = get_browser_name($_SERVER['HTTP_USER_AGENT']);

if ($appName == "Internet Explorer") {
    // Provide special handling for IE browsers
    echo "Internet Explorer detected, applying compatibility solutions";
} elseif (strpos($appName, '[Bot]') !== false) {
    // Handle bot visits
    echo "Bot visit detected, applying SEO optimization strategies";
} else {
    // Handle modern browsers
    echo "Welcome to modern browsers";
}
?>

Considerations and Best Practices

When working with user agent information, several important considerations should be kept in mind:

User agent strings can be modified by clients, so they should not be relied upon entirely for security-related decisions. Different browser versions may use different user agent formats, requiring regular updates to parsing functions to accommodate new browser versions. For complex user agent parsing needs, consider using specialized parsing libraries, such as the get_browser() function with browscap.ini files.

In performance-sensitive scenarios, avoid performing complete user agent parsing on every request. Consider caching parsing results or using lighter detection methods.

Copyright Notice: All rights in this article are reserved by the operators of DevGex. Reasonable sharing and citation are welcome; any reproduction, excerpting, or re-publication without prior permission is prohibited.