Current Location: Home> Latest Articles> get_client_version and preg_match() parse User-Agent details

get_client_version and preg_match() parse User-Agent details

gitbox 2025-05-29

In web development, it is a common requirement to obtain version information of a client browser or operating system, especially when it is necessary to respond to the client environment. One of the commonly used methods in PHP is to combine the get_client_version() function and preg_match() to parse the User-Agent string in the HTTP request header.

This article will analyze the implementation details of this process in detail through actual code examples.

1. What is User-Agent?

User-Agent is a field in the HTTP header that the client (usually a browser) will accompany when sending a request, informing the server of its software and hardware environment information. A typical User-Agent example is:

 Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36

2. The basic role of get_client_version()

The main function of the get_client_version() function is to extract the version number of the specified browser or client from the user's User-Agent string. The core technology to achieve this goal is regular expression matching, and PHP's preg_match() is just good at doing this job.

3. Detailed explanation of the implementation logic

Here is an example function get_client_version() , which is used to extract the version number of the Chrome browser:

 function get_client_version($userAgent, $clientName) {
    $version = null;

    switch (strtolower($clientName)) {
        case 'chrome':
            if (preg_match('/Chrome\/([\d\.]+)/i', $userAgent, $matches)) {
                $version = $matches[1];
            }
            break;

        case 'firefox':
            if (preg_match('/Firefox\/([\d\.]+)/i', $userAgent, $matches)) {
                $version = $matches[1];
            }
            break;

        case 'safari':
            if (preg_match('/Version\/([\d\.]+).*Safari/', $userAgent, $matches)) {
                $version = $matches[1];
            }
            break;

        case 'edge':
            if (preg_match('/Edg\/([\d\.]+)/i', $userAgent, $matches)) {
                $version = $matches[1];
            }
            break;

        default:
            // More clients can be expanded
            break;
    }

    return $version;
}

4. How does preg_match() work?

preg_match() is a function in PHP that performs regular matching, and its usage is as follows:

 preg_match(Regular expressions, String to be matched, Match the result array);

The meaning of regular expression /Chrome\/([\d\.]+)/i with Chrome as an example is as follows:

  • Chrome/ : Match the fixed string "Chrome/";

  • ([\d\.]+) : Capture a set of consecutive numbers or dots (i.e. version numbers), and brackets indicate the capture group;

  • /i : Ignore case matching.

After the match is successful, the version number will be extracted into $matches[1] and returned to the function for use.

V. Test Examples

Here is a complete test example:

 $userAgent = $_SERVER['HTTP_USER_AGENT'];
$client = 'chrome'; // Can be transferred 'firefox', 'safari' wait

$version = get_client_version($userAgent, $client);

echo "Currently used $client The browser version is: $version";

When accessing http://gitbox.net/test.php on the local server (assuming it is deployed in that domain), if you use the Chrome browser, it will output something like:

 Currently used chrome The browser version is: 122.0.0.0

6. Scalability and safety suggestions

  • Extensibility : You can easily add support for more clients (such as Opera, UC Browser, etc.), just add case and corresponding regularity.

  • Robustness : It is recommended to perform basic verification of User-Agent strings to avoid null or error values.

  • Security : Although parsing User-Agent is generally safe, it is still recommended not to use it in critical scenarios such as authentication.