현재 위치: > 최신 기사 목록> get_client_version 및 preg_match () 사용자 에이전트 세부 정보를 구문 분석합니다

get_client_version 및 preg_match () 사용자 에이전트 세부 정보를 구문 분석합니다

gitbox 2025-05-29

웹 개발에서 특히 클라이언트 브라우저 또는 운영 체제의 버전 정보를 얻는 것이 일반적인 요구 사항입니다. 특히 클라이언트 환경에 응답해야 할 때. PHP에서 일반적으로 사용되는 방법 중 하나는 get_client_version () 함수와 preg_match ()를 결합하여 HTTP 요청 헤더의 사용자 에이전트 문자열을 구문 분석하는 것입니다.

이 기사는 실제 코드 예제를 통해이 프로세스의 구현 세부 사항을 자세히 분석합니다.

1. 사용자 에이전트 란 무엇입니까?

User-Agent 는 HTTP 헤더의 필드로, 요청을 보낼 때 클라이언트 (일반적으로 브라우저)가 동반하여 서버에 소프트웨어 및 하드웨어 환경 정보를 알려줍니다. 일반적인 사용자 에이전트 예는 다음과 같습니다.

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

2. get_client_version ()의 기본 역할

get_client_version () 함수의 주요 함수는 사용자의 사용자 에이전트 문자열에서 지정된 브라우저 또는 클라이언트의 버전 번호를 추출하는 것입니다. 이 목표를 달성하기위한 핵심 기술은 정규 표현식 일치이며 PHP의 preg_match ()는 이 작업을 수행하는 데 능숙합니다.

3. 구현 로직에 대한 자세한 설명

다음은 Chrome 브라우저의 버전 번호를 추출하는 데 사용되는 get_client_version () 의 예입니다.

 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:
            // 더 많은 고객을 확장 할 수 있습니다
            break;
    }

    return $version;
}

4. preg_match ()는 어떻게 작동합니까?

preg_match () 는 PHP에서 정기적 인 일치를 수행하는 함수이며, 사용법은 다음과 같습니다.

 preg_match(정규 표현, 일치 할 문자열, 결과 배열을 일치시킵니다);

정규 표현의 의미 /chrome \/( 1 \ d\.] +)/i의 예제는 다음과 같습니다.

  • Chrome/ : 고정 문자열 "Chrome/"와 일치합니다.

  • ([\ d \.]+) : 연속 숫자 또는 도트 세트 (즉, 버전 번호)를 캡처하고 브래킷은 캡처 그룹을 나타냅니다.

  • /i : 케이스 일치를 무시합니다.

경기가 성공하면 버전 번호는 $ matches [1] 로 추출되어 사용을 위해 기능으로 돌아갑니다.

V. 시험 예제

다음은 전체 테스트 예입니다.

 $userAgent = $_SERVER['HTTP_USER_AGENT'];
$client = 'chrome'; // 전송할 수 있습니다 'firefox', 'safari' 기다리다

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

echo "현재 사용됩니다 $client 브라우저 버전은입니다: $version";

로컬 서버에서 http://gitbox.net/test.php 에 액세스 할 때 (해당 도메인에 배포되었다고 가정) Chrome 브라우저를 사용하면 다음과 같은 내용을 출력합니다.

 현재 사용됩니다 chrome 브라우저 버전은입니다: 122.0.0.0

6. 확장 성 및 안전 제안

  • 확장 성 : 더 많은 클라이언트 (예 : Opera, UC 브라우저 등)에 대한 지원을 쉽게 추가 할 수 있으며 케이스를 추가하고 해당 규칙을 추가 할 수 있습니다.

  • 견고성 : 널 또는 오류 값을 피하기 위해 사용자 에이전트 문자열의 기본 검증을 수행하는 것이 좋습니다.

  • 보안 : 사용자 에이전트를 구문 분석하는 것은 일반적으로 안전하지만 인증과 같은 중요한 시나리오에서는 사용하지 않는 것이 좋습니다.