2010-07-02 1 views
4

내가하고 싶은 정규 표현식에 대해 다시 한 번 도움이 필요합니다.PHP 브라우저 대행자 문자열과 함께 작동하는 정규 표현식

다시 말해서 사용자 에이전트를 구문 분석하여 배우려고합니다. 파이어 폭스 지금 ... 고려

테이크이 사용 도구을하려고 : 나는 UA에서 파이어 폭스 버전을 추출하는 정규 표현식을 할 노력하고있어

- Mozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.9.0.15) Gecko/2009101601 Firefox 2.1 (.NET CLR 3.5.30729) 
- Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.20) Gecko/20081217 Firefox(2.0.0.20) 
- Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1) Gecko/20090624 Firefox/3.1b3;MEGAUPLOAD 1.0 (.NET CLR 3.5.30729) 
- Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.3a3pre) Gecko/20100306 Firefox3.6 (.NET CLR 3.5.30729) 
- Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.19) Gecko/20081202 Firefox (Debian-2.0.0.19-0etch1) 
- Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.6) Gecko/20100625 Firefox/3.6.6 (.NET CLR 3.5.30729) 
- Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.1.13) Gecko/20080313 Firefox 

.

여기 규칙이 내가 원하는 있습니다

  1. 버전은 "파이어 폭스"문자열 뒤에 항상 ("파이어 폭스는"모든 문자의 경우에있을 수 있습니다).
  2. 버전 문자열은 "/"또는 공백이나 "("또는 아무 것도없는 문자) 바로 다음에 시작할 수 있습니다.
  3. 버전 문자열은 공백이나 문자열의 끝 또는 닫는 괄호 또는 세미콜론. 버전이 제공되지 않는 일부 드문 경우 (마지막 UA 참조). 정규 표현식이 일치해야하지만, (가능하다면) 버전으로 빈 문자열을 반환합니다. 나는 그게 전부에게 그것을 생각

을에서

  • . 만약 누구든지 위대하게 도울 수 있습니다!

  • +0

    PHP에 익숙합니까? 'get_browser'입니까? http://php.net/manual/en/function.get-browser.php –

    답변

    5

    다음과 같은 것이 작동해야합니다 :

    /Firefox[ \(\/]*([a-z0-9\.\-]+)/i 
    
    +0

    원래 질문에서 # 4를 추가했지만 작동하는 것으로 보입니다. – Activist

    +3

    # 4의 경우 +를 다음과 같이 *로 변환하십시오./Firefox [\ (\ /] * ([a-z0-9 \. \ -] *)/i' – casablanca

    +0

    # 'Debian-2.0.0.19-0etch1'과 일치합니다. 그것이 OP가 원하는 것인지 모르겠습니다. 내 것이 전혀 맞지 않았습니다 : S – alex

    0

    당신의 공급 사람들의 모든 일치합니다 다음

    #^Mozilla/.*\bFirefox\b# 
    

    의미

    모질라/"로 시작하는 문자열을 일치" "모든 문자 다음에, 다음을" Firefox "를 한 단어로 사용합니다.

    이 상황에서 \ b 단어 분리는 단어와 단어가 아닌 문자 사이의 경계에서 일치를 적용합니다. Dunno는 필요하지만 Firefox와 같은 다른 단어 (예 : "MyFirefox"또는 "Firefoxy")에 나타나는 일치를 방지합니다.

    는 ** 나는 종종 슬래시에 일치 할 필요는 나의 정규 표현식 주위에 대신 슬래시의 해시를 사용하려면 그리고 그것은 나를 혼란을 줄일 수 있습니다. *

    0

    당신이 그것을 달성하기 위해 노력하는지에 따라 Firefox보다 Gecko에서 더 똑똑해질 수 있습니다. 그러나 Mozilla Gecko를 기반으로하는 Firefox가 아닌 브라우저와 일치한다는 것을 의미합니다 (그러나 이것은 바람직한 동작 일 것입니다).

    #Mozilla/.*\bGecko/\d+#